项目场景1:静态库
静态库
1.介绍:
在程序执行前,静态库就已经加入到目标程序中去。
2.优点:
使得程序执行速度快,运行的时候不用再去找库。
3.缺点:
相反,静态库需要在程序编译的时候就要加进去,显然程序体积会变大。
静态库的创建和使用:
提示:这里以calFun.c和calFun.h还有calMain.c 三个文件作为本文的例子引用。
//**
1.创建.o文件。
2.创建.a文件。
3.使用静态文件
**//
//1.创建.o文件
gcc calFun.c -c //这里会生成calFun.o文件
//2.创建.a文件
ar rcs libcalFun.a calFun.o //注意这里静态库名前面必须要有lib前缀,否则用到静态库的时候在当前路径检查不到
//3.使用静态库
gcc calMain.c -lcalFun -L ./ -o static_cal_out//-L 先从当前路径找看有无指定静态库,没有再去/usr/lib/里面找
项目场景2:动态库
动态库
1.介绍:
动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
2.优点:
使得程序执行速度慢。
3.缺点:
相反,程序体积小。
动态库的创建和使用:
提示:这里以calFun.c和calFun.h还有calMain.c 三个文件作为本文的例子引用。
//**
1.创建.o文件。
2.生成.so文件。
3.使用动态文件
**//
//1.创建.o文件
gcc calFun.c -c -fpic //这里会生成calFun.o文件
//2.生成.so文件
gcc -shared calFun.o -o libcalFun.so //一样的需要注意这里静态库名前面必须要有lib前缀。
//3.使用静态库
gcc calMain.c -lcalFun -L ./ -o dynamic_cal_out//-L 先从当前路径找看有无指定静态库,没有再去/usr/lib/里面找
之后会遇到错误:
错误描述:lib下没有这个库。。
解决方案:
在当前路径下添加这句,如下:(将这个路径设置为环境变量,编译时候就可以找到)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gabe/Linux/library/lib
但这只是暂时的,也可以直接将这个动态库加到lib里。