库的特点
- 库是可执行代码的二进制形式,即将源代码转换成二进制的源代码,相当于对源代码进行了加密,别人可以看见库使用库,但是看不见库的源代码
- 2种类型库:静态库 libxxx.a,动态库 libxxx.so
- 静态库:在程序执行前就加入到目标程序中
- 动态库:在程序执行时动态(临时)由目标程序去调用
库制作及使用
制作
静态库
gcc demo1.c -c//将demo1.c生成demo1.o文件
ar rcs libdemo1.a demo1.o//将demo1.o生成libdemo1.a文件
动态库
gcc -shared -fpic demo1.c -o libdemo1.so//将demo1.c生成libdemo1.so文件
//-shared 指定生成动态库
//-fpic 标准,fPIC 选项作用于编译阶段,在生成目标文件时就得使用该选项,以生成位置无关的代码
使用
静态库
gcc demo.c -ldemo1 -L ./ -o demo //编译目标程序和静态库文件生成可执行文件demo
//-L表示让gcc从-L指定的目录寻找,默认在usr/lib或者usr/local/lib里面寻找
//-l是指定要用的静态库,掐头去尾只留下demo1,lib去掉 .a去掉
//gcc默认到use/lib里面寻找文件,通过-L ./把它定为到当前目录下寻找
./demo //运行生成的此可执行文件即可输出目标程序结果
动态库
gcc demo.c -ldemo1 -L ./ -o demo //编译目标程序和动态库文件生成不可执行文件demo
1.想要运行可执行文件需创建shell脚本文件
2.创建start.sh脚本文件:vi start.sh
3.export LD_LIBRARY_PATH="/home/pi/back/test"
./demo //脚本文件内容
4.chmod +x start.sh //给脚本文件一个可执行权限x
5. ./start.sh //运行此可执行脚本文件即可输出目标程序结果
转载请标明出处