step4 . day4 库函数和库函数的制作

函数库: 具有特定功能的函数,系统或者第三方提供的编译好的二进制文件(如数学库、线程库等),分为静态库和动态库。

静态库:代码运行时候,将静态库代码复制进文件(用到哪些复制哪些),移植性好,但是代码体积大,升级库后需要重新编译源文件

生成静态库的步骤:
1)写库文件源码  即和之前头文件实现的.c文件类似(通常函数库也有头文件)
2)把源码编译为目标文件(*.o)         gcc -c xxxx.c xxx.c

3) 用ar命令把目标文件生成lib文件     ar crs libxxx.a xxx.o xxx.o ...
4)写调库函数的主程序。
5)把生成的lib文件和主程序一起编译链接

gcc -o 目标文件名 -L库路径 -lxxx
gcc -o 目标文件名 -static -L库路径 -lxxx

 

动态库:不复制代码到源代码,在程序运行时候同事加载库至内存,动态库可以被多个程序调用,动态库升级方便,但程序运行依赖库的加载
生成动态库的步骤:

1)写库文件源码,同上
2)把源码编译为目标文件(*.o)     gcc -c -fPIC xxxx.c xxx.c  (路径无关文件)

3)生成动态链接库文件                  gcc -shared -o libxxx.so xxx.o

4)写调库函数的主程序。
5)把生成的lib文件和主程序一起编译链接

gcc -o 目标文件名 -L库路径 -lxxx

6) 生成的库文件执行文件在执行的时候找不到库文件,
下面三种方法可选,
1 把动态库添加到系统的库文件目录中                         //需要权限,不建议使用
2 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你的动态库路径   //推荐
3 添加/etc/ld.so.conf.d/*.conf文件,执行ldconfig刷新   //需要权限,不建议使用

posted @ 2019-08-05 21:51  灰机12321  阅读(185)  评论(0编辑  收藏  举报