首页 / LINUX / linux动态链接库的使用
linux动态链接库的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux动态链接库的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1498字,纯文字阅读大概需要3分钟。
内容图文
linux动态链接库的使用
文件结构
目录结构
pwd
/home/virgil/Desktop/shared_object
tree
.
├── lib
│?? └── add.c
└── main
└── main.c
add.c
int add(int a,int b)
{
return a+b;
}
main.c
#include <stdio.h>
//声明要调用库中的函数
int add(int a,int b);
int main()
{
printf("%d\n",add(1,2));
return 0;
}
编译动态库
进入lib
目录
gcc add.c -fPIC -shared -o libadd.so
编译源代码
进入main
目录
gcc main.c -o a.out -ladd
这时编译会报错,提示找不到动态链接库add
那么可以手动通过-L
参数给出add动态链接库的路径
gcc main.c -o a.out -l add -L ../lib/
如果每次都需要指明路径未免太麻烦了,实际上gcc默认会有一个默认搜索路径,它会首先在该路径中进行搜索,该路径通常是/lib
或者/usr/lib
目录.
那么我就把libadd.so
拷贝到该目录下即可
sudo cp ../lib/libadd.so /usr/lib
更常用的方法是使用软链接的方式,这样更新libadd.so
时就无需重复拷贝
cd /usr/lib
ln -s /home/virgil/Desktop/shared_object/lib/libadd.so
重新编译,就成功了
gcc main.c -o a.out -ladd
另外,除了手动在gcc参数中指明路径外还可以通过环境变量的方式来指出路径(绝对路径)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/virgil/Desktop/shared_object/lib
如果不想每次都要export
可以在 ~/.bashrc
或者 ~/.bash_profile
中添加下面的命令
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/virgil/Desktop/shared_object/lib
遇到问题
尝试修改
/etc/ld.so.conf.d
文件夹中的conf文件来指明路径,仍然提示找不到该库ld.so.conf
是运行时的动态链接,与编译时的链接动作无关,所以修改里面的conf文件是无法让gcc找到所需的库的
参考链接
内容总结
以上是互联网集市为您收集整理的linux动态链接库的使用全部内容,希望文章能够帮你解决linux动态链接库的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。