什么是.so文件?


45

我在ubuntu下遇到Flash问题,打算尝试升级到Flash 10.1的Alpha版本。

问题是它以.so文件形式出现,而我找不到关于这是什么的任何信息。


1
其他张贴者已经回答了您的问题,因此我没有必要再添加其他基本相同的文本。不过,我吸引了您对此bug的关注(bugs.launchpad.net/ubuntu/+source/flashplugin-nonfree/+bug/…),因为您的症状可能相似,并且您想在那里看看。
mac

1
几乎忘了:在上面链接的错误描述中,还有一种解决方法可以解决该问题(注释16)。祝你好运!
mac

Answers:


60

.so文件是已编译的库文件。它代表“共享对象”,类似于Windows DLL。

通常,软件包文件会在安装后将它们放在/ lib或/ usr / lib下或类似的地方。如果将.so文件提取到$ LD_LIBRARY_PATH中的某个位置,则需要该库的程序应该可以使用它。

理想情况下,请阅读随附的文档以确保其位置正确。

如果locate adobe-flashplugin从终端运行类似的命令,则可能会看到一些现有的类似名称的库。


2
除非Ubuntu所做的事情与其他Linux动态链接程序完全不同,否则动态链接程序不会搜索路径($ PATH),而是搜索固定的路径集以及$ LD_LIBRARY_PATH中指定的目录。有关更多详细信息,请参见ld.so和ldconfig的手册页。
克里斯·克莱兰德

听起来不错-谢谢... $ LD_LIBRARY_PATH不是$ PATH。:-)
Andrew Flanagan

1
/ usr / lib和/ lib比/ var / lib更为常见。实际上,在/ var / lib中放置一个库非常罕见。
09年

抱歉-着急。:-)我会改正的……
Andrew Flanagan

好的,让我们想象一下我有一个.so文件...我需要“使用”什么文件?
皮托2015年

10

可以创建两种Linux C / C ++库类型。这些是静态库(.a)动态链接的分片对象库(.so)

当涉及(.so)时,此库只有一种形式,但是可以以两种方式使用。

1)在运行时动态链接,但具有静态意识。这些库在编译/链接阶段必须可用。共享对象不包含在可执行组件中,而是与执行绑定在一起。

2)在执行期间使用动态链接加载器系统功能动态加载/卸载和链接(即浏览器插件)。

通常,安装时,软件包文件会将“ .so”文件放在/ lib或/ usr / lib中。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.