库: 可执行代码的二进制形式
1.静态库:
编译时会被链接到目标代码中,程序运行时将不再需要该静态库,因此体积较大
1.1 创建静态库:
创建静态库用ar命令,它将.o转换成.a
# gcc -c func.c
生成目标文件 (func.o)
# ar crs libfunc.a func.o
生成静态库文件(libfuc.a)
1.2 gcc编译时链接静态库
# gcc main.c -L. -lfunc
.代表当前路径 func为库名
2.动态库:
编译时不会链接到目标代码中,而是在运行时才被载入,运行时需要该动态库,因此体积较小
2.1 创建动态库:
用gcc创建共享库
# gcc -fPIC -Wall -c func.c
-fPIC 表示创建与地址无关的编译程序
# gcc -shared -o libfunc.so func.o
生成动态库文件(libfunc.so)
2.2 使用动态库
①# gcc main.c -L. -lfunc
. 代表当前路径 func为库名 ,编译器默认搜索库的路径是/user/lib和/lib
②
1)配置myld.conf文件,里面加一行库文件的路径,然后将该文件放到/etc/ld.so.conf.d目录下;
2)在/etc/ld.so.conf文件中增加一行include ld.so.conf.d/myld.conf
3)执行 ldconfig命令