静态库建立和使用步骤
现在有四个cpp文件,四个文件分别存放了加减乘除四种运算的函数,并且有一个头文件如下
#include <iostream>
using namespace std;
int add(int, int);
int sub(int, int);
int mul(int, int);
int div(int, int);
第一步:将四个cpp文件转换成二进制的.o 文件
第二步:将四个.o文件合成一个静态库文件
格式:ar + 库名(库的命名格式:lib+自由取名+.a)+.o
第三步:使用静态库
有一个main函数使用到了刚才的静态库,函数如下:
这时只需要calc库,calc.头文件就能成功编译并使用main函数了。main函数编译命令如下
参数解释:在上一个笔记中已经提到了,-L 后面加自定义库的路径, -l后面加库的名称(注意这个名称是把前面的lib和后面的.a去掉以后的名称)。
动态库建立和使用步骤
同上仍然是四个cpp文件
第一步:同样将四个cpp文件转换为二进制.o文件,但是需要加入-fpic命令
其中-fpic参数理解为与程序生成位置无关,也就是动态库的特性
第二步:将.o文件打包成一个动态库文件
命令格式:g++ -shared -o 库名(库名格式:lib+名称+.so) .o文件
注意一定要加-o
第三步:编译main函这里的参数和静态库一样,注意-l后面的名称一定要去头去尾。
注意:但是这个可执行文件运行会报错,如图
提示找不到动态库的路径,由于动态库不是直接放到代码段中去,而是在启动的时候才会用到,所以需要告知系统去哪里寻找到动态库,因此可以在环境变量中加入该路径,方法如下:
其中:$LD_LIBRARY_PATH是为了保证不覆盖原有的路径,只是添加一个路径
查看该环境变量的方法为
这种方法只能保证在该终端下可行,退出该终端后需重新设置才能运行
另一种方法是配置加载的链接库的路径。
打开链接库的配置文件
在文件中添加路径/home/gmq/example1,然后保存,再让设置生效
可以不加-v
这样就可以在所有终端下都可以直接执行了。