linux支持两种库的类型:静态库和动态库(共享库)
1. Linux静态库和动态库的命名规则:
静态函数库:libxxx.a
动态函数库:libxxx.so
2. Gcc/g++的编译链接:
这些库文件都是由*.o文件生成的
动态库:程序运行过程中进行连接。可执行文件+库文件
静态库:编译时进行连接。库文件代码的复制粘贴过程。
程序执行时先检查依赖的库文件,并查找出依赖的文件库路径。
3. 静态库和动态库的创建过程:
a) 创建静态库:
1、编译生成目标文件
gcc -c struct.c
2、创建静态库
ar -rt libstruct.a file1.o file2.o
3、链接静态链接库,生成可执行文件
gcc main.c 【-static -L.】 -lstruct -o main
b) 创建动态库:
1.使用gcc编译.c文件的使用,使用-fPIC标签,然后在使用*.o文件生成动态库文件的时候,传递-shared标签给gcc,例子:
Gcc –fPIC –c file1.c
Gcc -fPIC -c file2.c file3.c
Gcc –shared -o libtest.so file1.o file2.o
这样就创建了libtest.so动态库文件。
2.设置共享库文件的路径:
Export LD_LIBRARY_PATH=$LD_LIBRAR_PATH:路径
.sudo vim /etc/ld.so.conf 中添加库文件的绝对路径,执行 sudo ldconfig
sudo mv libmath.so /usr/lib
3.连接编译生成可执行文件:
gcc math.c -L. -lmath -o myout
ldd a.out 显示库文件的查找路径