动态库制作与使用

发布时间:2022-06-26 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了动态库制作与使用脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

命令规则Llinux libxxx.so win: libxxx.dll

1. 制作:gcc -c -fpic a.c b.c 位置无关的代码

2 . 得到动态库

  ` gcc -shared a.o b.o  -o libcalc.so

 

示例:

1.  `gcc -c -fpic add.c div.c mult.c  sub.c ` 

2.  `gcc -shared *.o -o libcalc.so`

动态库制作与使用

 

 

 

3.使用 

` gcc main.c -o main -i include/ -l calc -L lib/`

动态库制作与使用

 

 

 因为静态库会打包到可执行文件,但是动态库不会,所以运行的时候才会吧动态库加载到内存中。 

使用ldd查看可执行文案依赖的动态库

动态库制作与使用

 

 

动态库获取的顺序:

当系统加载可执行代码时候,能够知道其所依赖的库的名字,但是还需要知道绝对路 径。此时就需要系统的动态载入器来获取该绝对路径。对于elf格式的可执行程序,是 由ld-linux.so来完成的,它先后搜索elf文件的 DT_RPATH段 ——> 环境变量 LD_LIbrARY_PATH ——> /etc/ld.so.cache文件列表 ——> /lib/,/usr/lib 目录找到库文件后将其载入内存

 

第一中动态连接方式  LD_LIBRARY_PATH 

查看` echo $LD_LIBRARY_PATH` 

拼接环境变量:`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/linux-webserver/lesson06/library/lib`

动态库制作与使用

 

 这种方式与终端有关,是临时的

 

永久性配置的方法。

用户级别的设置

`vim ~.bashrc`

添加` export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/linux-webserver/lesson06/library/lib`

激活 `. .bashrc ` .就是source 激活的意思

系统级别的配置:

`sudo vim /etc/PRofile` 后面一样

 

第二章方式: /etc/ld.so.cache 

`sudo vim /etc/ld.so.conf`

动态库制作与使用

 

 

 

 

`sudo ldconfig`

动态库制作与使用

 

 第三第四种,把库文件放到 /lib/ /user/liv目录,但是不推荐

脚本宝典总结

以上是脚本宝典为你收集整理的动态库制作与使用全部内容,希望文章能够帮你解决动态库制作与使用所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。