linux学习笔记4(静态库和动态库建立)

静态库建立和使用步骤

现在有四个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函数编译命令如下

扫描二维码关注公众号,回复: 5357985 查看本文章

参数解释:在上一个笔记中已经提到了,-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

这样就可以在所有终端下都可以直接执行了。

猜你喜欢

转载自blog.csdn.net/qq_34489443/article/details/86628546