Linux动态库的制作
首先生成与位置无关的目标文件:
gcc -c -fpic add.c div.c mult.c sub.c
然后制作动态链接库:
gcc -shared *.o -o libcalc.so
Linux动态库的使用
gcc main.c -o main -I ./include/ -l calc -L ./lib/
这里需要注意,-l后面跟的是动态库的名字
Linux动态库加载失败解决办法
配置环境变量
- 直接配置:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gabe/Linux/library/lib
- 当前用户目录配置:
vim ~/.bashrc
打开之后在最后一行添加export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gabe/Linux/library/lib
然后source ~/.bashrc
,才能生效。
- 系统配置:
vim /etc/profile
打开之后在最后一行添加export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gabe/Linux/library/lib
然后source /etc/profile
,才能生效。
配置动态库目录
sudo vim /etc/ld.so.conf
打开之后添加动态库所在的路径即可。
sudo ldconfig
Linux动态库的优缺点
优点:
- 实现进程间的资源共享。
- 更新、部署简单。
- 可以控制何时加载。
缺点:
- 比静态加载要慢。
- 发布程序需要提供所依赖的动态库。