1.生成动态库
用 hello.c 文件来生成自己的动态库,共两步:
1.将 hello.c 处理为二进制指令文件 hello.o
gcc -fPIC -c .c 文件 -o .o 文件
2.将 hello.o 文件打包生成库文件
gcc --shared .o 文件 -o lib 自定义名称.so
要注意 Linux 中动态库的命名规则:lib 自定义名称.so,也就是说,lib 和.so 是规定的格
式,而自定义名称才是库的名称。
使用
(1)生成可执行程序时链接使用
为了解决链接时找不到动态库的问题,我们可以采用下面几种办法:
1.将我们自己写的库文件添加到系统库文件的存储目录中,这样系统链接时就可以找到了。
但这样感觉不太好,因为总感觉像是在污染系统库。
2.使用环境变量,将我们自己的库文件的路径配置到 LIBRARY_PATH 环境变量中,系统就会
在这里面找到我们的库文件路径,就可以知道我们链接的是哪个库。
export LIBRARY_PATH=${LIBRARY_PATH}:我们的库文件所在路径
如图:
(2)运行可执行程序时加载使用
依赖动态库的程序在运行时,需要将动态库加载到内存中,这里也遇到了问题。因为系
统加载动态库的时候,也是去指定的目录中加载的,因此还需要解决这个问题,方法如下:
1.将我们自己写的库文件添加到系统库文件的存储目录中。
使用环境变量,将我们自己的库文件的路径配置到 LD_LIBRARY_PATH 环境变量中,当需要
加载库文件到内存中时,系统就会在这里面找到我们的库文件路径,就可以知道我们加载的
是哪个库。
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:我们的库文件所在路径
假如要删除该文件直接