我目前正在尝试将一个C应用程序移植到AIX,但有些困惑。.a和.so文件是什么,以及在构建/运行应用程序时如何使用它们?
我目前正在尝试将一个C应用程序移植到AIX,但有些困惑。.a和.so文件是什么,以及在构建/运行应用程序时如何使用它们?
存档库(.a)是静态链接的,也就是在使用gcc时以-c选项编译程序。因此,如果库中有任何更改,您需要重新编译和构建代码。
.so(shared object)库比.a库的优势在于它们在运行时链接,也就是在通过gcc的-o选项创建.o文件之后。因此,如果.so文件有任何更改,您不需要重新编译主程序。 但请确保您的主程序已经用ln命令链接到新的.so文件。
这将帮助您构建.so文件。 http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
.a是静态链接库,如果你使用其中存储的代码,它将被提取并嵌入到你自己的二进制文件中。在Visual Studio中,这些文件通常是以.lib为后缀的。
.so是动态链接库,如果你使用其中存储的代码,不会被提取和嵌入到你自己的二进制文件中。相反,它只是被引用,因此二进制文件将依赖于它们,并在运行时添加/加载来自.so文件的代码。在Visual Studio / Windows中,这些文件通常是以.dll为后缀的(还包括小型的.lib文件,其中包含链接信息)。
.dll
的小型.lib
文件被称为导入库。 - Second Person Shooter.a文件通常是被静态链接(或更准确地说是存档)的库,而.so是动态链接库。
要进行端口转移,您需要获取编译它们的源代码或在您的AIX机器上找到等效的文件。
它们被用于链接阶段。.a
文件是静态链接的,而.so
文件则是半静态链接的,这意味着当你运行exe时需要库。
您可以通过查看任何lib目录找到它们的存储位置.../usr/lib
和/lib
大部分都有,还有LIBRARY_PATH
环境变量。