.a和.so文件是什么?

我目前正试图将一个C应用程序移植到AIX,我感到困惑。.a和.so文件是什么?在构建/运行应用程序时如何使用它们?

471925 次浏览

.a是静态库。如果您使用存储在其中的代码,则会从它们中取出并嵌入到您自己的二进制文件中。在Visual Studio中,这些文件是.lib文件。

.so是动态库。如果您使用存储在其中的代码,则不会将其提取并嵌入到您自己的二进制文件中。相反,它只是被引用,因此二进制文件将依赖于它们,来自so文件的代码将在运行时添加/加载。在Visual Studio/Windows中,这些将是.dll文件(包含链接信息的小.lib文件)。

< p >。文件通常是静态链接的库(或者更准确地说是存档),以及
.so是动态链接库。< / p >

要进行移植,您需要编译它们的源代码,或者AIX机器上的等效文件。

它们用于连接阶段。.a文件是静态链接的,.so文件是某种链接的,因此无论何时运行exe都需要这个库。

你可以通过查看任意lib目录找到它们的存储位置…/usr/lib/lib有大部分环境变量,还有LIBRARY_PATH环境变量。

存档库(.a)是静态链接的,即当你在gcc中使用-c选项编译程序时。因此,如果库中有任何变化,您需要重新编译和构建代码。

.so(共享对象)相对于.a库的优点是,它们在运行时被链接,即在gcc中创建.o文件-o选项之后。所以,如果在. So文件中有任何变化,你不需要重新编译你的主程序。 但是要确保你的主程序用ln命令链接到新的.so文件

这将帮助您构建.so文件。 # EYZ0 < / p >

维基百科是一个不错的信息来源。

要了解静态库文件,如.a读取静态libarary

要了解共享库文件,请阅读Library_ # Shared_libraries(计算)在这个页面上,文件命名部分也有有用的信息。