我目前正试图将一个C应用程序移植到AIX,我感到困惑。.a和.so文件是什么?在构建/运行应用程序时如何使用它们?
.a是静态库。如果您使用存储在其中的代码,则会从它们中取出并嵌入到您自己的二进制文件中。在Visual Studio中,这些文件是.lib文件。
.so是动态库。如果您使用存储在其中的代码,则不会将其提取并嵌入到您自己的二进制文件中。相反,它只是被引用,因此二进制文件将依赖于它们,来自so文件的代码将在运行时添加/加载。在Visual Studio/Windows中,这些将是.dll文件(包含链接信息的小.lib文件)。
要进行移植,您需要编译它们的源代码,或者AIX机器上的等效文件。
它们用于连接阶段。.a文件是静态链接的,.so文件是某种链接的,因此无论何时运行exe都需要这个库。
.a
.so
你可以通过查看任意lib目录找到它们的存储位置…/usr/lib和/lib有大部分环境变量,还有LIBRARY_PATH环境变量。
/usr/lib
/lib
LIBRARY_PATH
存档库(.a)是静态链接的,即当你在gcc中使用-c选项编译程序时。因此,如果库中有任何变化,您需要重新编译和构建代码。
这将帮助您构建.so文件。 # EYZ0 < / p >
维基百科是一个不错的信息来源。
要了解静态库文件,如.a读取静态libarary
要了解共享库文件,请阅读Library_ # Shared_libraries(计算)在这个页面上,文件命名部分也有有用的信息。