什么是.a和.so文件?

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

存档库(.a)是静态链接的,即当你在gcc中用-c选项编译你的程序。 所以,如果库中有任何更改,则需要再次编译和构build您的代码。

.so(共享对象)比.a库的优点是,它们在运行时链接,即在gcc中创build.o文件-o选项之后。 因此,如果.so文件中有任何更改,则不需要重新编译主程序。 但是请确保您的主程序使用ln命令链接到新的.so文件。

这将帮助您构build.so文件。 http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

希望这可以帮助。

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

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

.a文件通常是静态链接的库(或者更精确的存档文件)
.so是dynamic链接的库。

为了做一个端口,你将需要被编译的源代码,或者AIX机器上的等价文件。

它们被用于连接阶段。 .a文件是静态链接的,而.so文件是链接的,所以无论何时运行exe时都需要库。

您可以通过查看任何lib目录来find它们的存储位置: /usr/lib/lib都包含它们,而且还有LIBRARY_PATH环境variables。

维基百科是这个信息的体面来源。

要了解静态库文件,如.a,请阅读Static libarary

要学习像.so这样的共享库文件,请阅读Library_(计算)#Shared_libraries在这个页面上,“ 文件命名”部分也提供了有用的信息。