静态库.o文件的集合ar -cr libxxx.a  xxx1.o xxx2.o xxx3.o ... compile& nbsp; gcc main.c -l xxx [-L库路径](如果未添加-L是在标准库路径下搜索)。 ./a.out基本概念:静态库也称为存档文件。
它是多个.o文件的集合。 Linux中静态库文件的后缀是“ a”。
静态库的代码已在编译时链接到应用程序。静态库中的每个成员(.o文件)没有特殊的存在格式,只是.o文件的集合。
使用“ ar”维护和管理静态库的三个参数的工具ar:r表示将文件插入存档文件,c表示创建存档文件,s表示如果存档文件包含对象模式,则可以使用此参数创建备份文件的符号表。 lib和.a都是系统指定的静态库文件的固定格式。
Mylib是静态库的名称。编译时,链接器将在标准路径(/ usr / lib; / lib)或用户指定的路径中找到它。
一份文件。 gcc -o main main.c -static -L。
-lmylib -static指定编译器以链接静态库-L。当在gcc编译器中引用可搜索目录和库文件时,将静态库的路径指定为当前路径需要使用(-l +库名),例如将-lm添加到gcc可以链接程序中的标准算术库程序集,加上-lpthread可以链接到linux标准线程库。
摘要:使用静态库可以使程序独立于任何其他库独立运行,但是它占用大量内存和磁盘空间,并且如果库文件已更新,则需要重新编译源代码,即不够灵活使用。实际上,编译时不需要添加-static,只需使用gcc -o main main.c -L即可。
-lmylib,链接器将为我们链接指定的静态库和标准C共享库。 ============================================不包含动态库动态库中的文件仅在执行期间加载到可执行文件中。
gcc -shared -fPIC xxx.c -o libxxx.so编译gcc main.c -l xxx [-L编译时库路径]临时指定运行时库搜索路径。 [LD_LIBRARY_PATH =(运行时库路径)] ./a.out如果未指定,它将在标准路径下找到。
发布库时,标准路径为“ / usr / lib& nbsp;或/ lib”;不需要。操作,但请确保添加由“ -l”指定的库名称。
当使用gcc永久修改运行时库搜索路径/etc/ld.so.conf 时修改链接器的配置文件ldconfig。 & nbsp; & nbsp; & nbsp; & nbsp;使配置文件有效3.编译参数解析的最重要部分是GCC命令行的一个选项:-shared此选项指定生成动态链接库(让链接器生成T型导出符号表,有时还会生成一个弱链接W类型的“导出”符号),没有此标志就无法连接外部程序。
它等效于可执行文件-fPIC:这意味着将其编译为与位置无关的代码。如果不使用此选项,则编译的代码取决于位置。
因此,在动态加载期间,将代码复制以满足不同过程的需求,但是无法实现。实际代码共享的目的。
-L .:指示要链接的库位于当前目录中-ltest:当编译器查找动态链接库时,有一个隐式命名规则,即在给定名称之前添加lib并在其后添加.so确定库名称LD_LIBRARY_PATH:此环境变量指示动态链接程序可以在其中加载动态库的路径。当然,如果您具有root权限,则可以修改/etc/ld.so.conf文件,然后调用/ sbin / ldconfig达到相同的目的,但是如果您没有root权限,则只能使用输出LD_LIBRARY_PATH的方法。