库的存在,可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便于升级。程序库可分静态库(static library)和共享库(shared object)(动态库)
静态库用在对空间要求低,对时间要求较高的核心程序中;动态库对时间要求较低,对空间要求高
静态库
静态库制作及使用步骤:
①将.c生成.o文件
②使用ar工具制作静态库(ar rcs lib库名.a xxx.o)
③gcc xxx.c lib库名.a -o a.out
动态库
动态库制作及使用步骤:
①将.c生成.o文件(生成与位置无关的代码 -fPIC)
②使用gcc -shared 制作动态库(gcc -shared -o lib库名.so xxxx.o)
③编译可执行程序时,指定所使用的动态库(-l 指定库名;-L 指定库路径)
④运行可执行程序
出错:
链接器:工作于链接阶段,工作时需要-l和-L
动态链接器:工作于程序运行阶段,工作时需要提供动态库所在目录位置(通过环境变量 export LD_LIBRARY_PATH=动态库路径,临时生效,终端重启环境变量失效)
永久生效:写入终端配置文件: .bashrc
① vi ~/.bashrc
②写入 export LD_LIBRARY_PATH=动态库路径保存
③ . . bashrc/ source .bashrc /重启终端—->让修改后的.bashrc生效
