库是一组预先编译好的方法的集合
Linux上的库的位置:/lib 和 /usr/lib,但是在红帽子上,/lib和/usr/lib分开
库有两种形态:静态库和动态库(共享库)
linux:静态库(libxxx.a),动态库(libxxx.so)
windows:静态库(.lib),动态库(.dll)
2.静态库如何生成和使用 2.1 静态库的生成下面会有准备生成静态库的三个文件:max.c add.c和fun.h
第一步:先将源文件编译成".o"文件
第二步:使用ar命令将第一步产生的“.o”文件,生成对应的静态库
c 创建库 r 将对应方法添加到库中 v 显示执行过程 t 显示库中包含的方法
2.2 静态库的使用现在有测试文件main.c的代码内容
3.动态库如何生成和使用 3.1 动态库的生成下面会有准备生成静态库的三个文件:max.c add.c和fun.h
第一步:先将源文件编译成".o"文件
第二步:使用gcc命令将第一步一步产生的“.o”文件,生成对应的动态库
gcc -shared -fPIC -o libxxx.so max.o add.o
-shared 生成动态库 -fPIC 说明生成的动态库中的方法使用相对地址
3.2 动态库的使用现在有测试文件main.c的代码内容:
运行起来,发现可执行文件main,能生成,但是执行起来会报错,会说找不到相应的共享库,因为可执行文件main执行起来发现需要共享库funs,它直接回去标准路径下/usr/lib去找,这时肯定找不到,所以会报错,解决方案就是将生成的动态库libfuns.so拷贝一份放到/usr/lib下,就不会报错了。
假设当前路径下,有同名的静态库和动态库,那么可执行文件链接的是哪一个库?
4.静态库和共享库的区别静态库在链接时将用到的方法包含到最终生成的可执行程序中
共享库不包含,只做标记,在运行程序时,才动态加载



