Linux共享库、静态库、动态库详解 - sunsky303 - 博客园 (cnblogs.com)https://www.cnblogs.com/sunsky303/p/7731911.html1、分文件编程案例
2、库
a)静态库
静态库数据库是在程序执行前(编译)就加入到目标程序中
优点:运行快
缺点:大
b)动态库
动态库数据库是在程序执行时(临时)动态由目标程序去调用
优点:小
缺点:运行慢
3、库的制作
静态库的制作:格式xxx.a
a) gcc calcufuncs.c -c //生成 xxx.o 文件
b) ar rcs libcakcufuncs.a calcufuncs.o //xxx.o 文件生成xxx.a静态库文件
动态库的制作:
a) gcc -shared -fpic calcufuncs.c -o libcalc.so
//-shared 指定生成动态库
//-fpic 标准 作用于编译阶段,在生成目标文件时就得使用该选项,以生成位置无关代码
4、库的使用
静态库:
gcc calculatorT.c -lcalcufunc -L ./ -o mainProstatic
//-lcalcufunc -l 是指定要用的动态库,库名砍头去尾
// - L 告诉gcc编译器从-L指定的路径去找静态库默认是从
/usr/lib 或者 /usr/local/lib 去找
动态库:
gcc calculatorT.c -lcalc -L ./ -o mainProDy
引用动态库,怎么指定动态库的位置
通过环境变量LD_LIBRARY_PATH指定动态库搜索路径。
export LD_LIBRARY_PATH=”/home/pi/Desltop/test”
可以创建sh 脚本
Eg:
vi start.sh
export LD_LIBRARY_PATH=” /home/pi/Desltop/test”
./mainProDy
Chmod +x start.sh //给sh一个可执行权限