Dun*_*unc 401 c unix compilation shared-libraries .a
我目前正在尝试将C应用程序移植到AIX,我感到很困惑.什么是.a和.so文件以及它们在构建/运行应用程序时如何使用?
Lea*_*afy 457
归档库(.a)是静态链接的,即在gcc中使用-c选项编译程序时.因此,如果库中有任何更改,则需要再次编译和构建代码.
.so(共享对象)优于.a库的优点是它们在运行时链接,即在gcc中创建.o文件-o选项之后.因此,如果.so文件中有任何更改,则无需重新编译主程序.但请确保您的主程序使用ln命令链接到新的.so文件.
这将帮助您构建.so文件. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
希望这可以帮助.
Mar*_*rio 201
.a是静态库.如果您使用存储在其中的代码,则从它们中获取并嵌入到您自己的二进制文件中.在Visual Studio中,这些将是.lib文件.
.so是动态库.如果您使用存储在其中的代码,则不会将其嵌入到您自己的二进制文件中.相反它只是被引用,所以二进制文件将取决于它们,并且so文件中的代码在运行时添加/加载.在Visual Studio/Windows中,这些将是.dll文件(包含链接信息的小.lib文件).
它们用于链接阶段..a文件是静态链接的,.so文件是排序链接的,因此每当运行exe时都需要库.
您可以通过查看任何lib目录找到它们存储的位置...... /usr/lib并且/lib具有大部分目录,并且还有LIBRARY_PATH环境变量.