Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux中制作动态库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

制作一个动态库 我们可以使用gcc工具来制作一个动态库 示例:自己制作一个动态库,库函数的功能是传递一个字符串并输出。 第一步:需要准备3个文件:Hello.h、Hello.c、test.c。其中Hello.h和Hello.c用于制作动态库,test.c是测试程序主函数 第二步:使用gcc编译生成动态库 gcc Hello.c -fPIC -c -o Hello.o gcc Hello.o -sh
@H_404_2@

制作一个动态库
我们可以使用gcc工具来制作一个动态库
例:自己制作一个动态库,库函数功能是传递一个字符串并输出
第一步:需要准备3个文件Hello.h、Hello.c、test.c。其中Hello.h和Hello.c用于制作动态库,test.c是测试程序主函数

第二步:使用gcc编译生成动态库
gcc Hello.c -fPIC -c -o Hello.o
gcc Hello.o -shared -o libmyHello.so
或者直接一步:gcc Hello.c -fPIC -shared -o libmyHello.so
gcc参数解析:
⒈-fPIC(或-fpic):表示编译为位置独立的代码。位置独立的代码即位置无关代码,在可执行程序加载的时候可以存放在内存内的任何位置。若不使用该选项则编译后的代码是位置相关的代码,在可执行程序加载时是通过代码拷贝的方式来满足不同的进程的需要,没有实现真正意义上的位置共享。
⒉-shared:指定生成动态链接

ldd Hello
linux-gate.so.1 => (0xb77b0000)
libmyHello.so => not found
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75f6000)
/lib/ld-linux.so.2 (0xb77b1000)
第三步:定位自己制作的动态库
为了让系统能成功找到自己制作的动态库,需要定位到该动态库的位置。有三种方式:
⑴把自己制作的库拷贝到/usr/lib和/lib下
⑵在LD_LIBRARY_PATH环境变量中添加自己制作的库所在的位置。/
添加/etc/ld.so.conf.d/XXX.conf文件(XXX需要自己命名),把库所在的路径添加文件末尾并执行ldconfig刷新。 //对所用用户有效


第一种:将库拷贝到/usr/lib和/lib下
sudo cp libmyHello.so /usr/lib
sudo cp libmyHello.so /lib
此时再执行./Hello即可得到正确的显示结果。

第二种:修改LD_LIBRARY_PATH环境变量:
sudo vim /etc/bash.bashrc 对所有用户生效 或者修改 ~/.bashrc 这样就只对当前用户生效

文件最后,添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/linux/file/dongtaiku
保存退出,重启终端,此时再执行./Hello即可得到正确的显示结果。。

第三种:添加/etc/ld.so.conf.d/XXX.conf文件
sudo vim /etc/ld.so.conf.d/my.conf
文件添加动态库的目录
/home/linux/file/dongtaiku
保存退出,执行ldconfig使设置生效
sudo ldconfig

第四步:修改编译时的搜索库路径方法一:可以直接在gcc编译时 -L加库路径方法二:添加库路径至LIBRARY_PATH环境变量

@H_404_2@

大佬总结

以上是大佬教程为你收集整理的linux中制作动态库全部内容,希望文章能够帮你解决linux中制作动态库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

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