免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1287 | 回复: 4
打印 上一主题 下一主题

[Linux] 关于 环境变量LD_LIBRARY_PATH [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-10 18:50 |只看该作者 |倒序浏览
我 自己编了一个动态库  libtest.so (里面只有一个函数 fun  打印  "hello wold")   
我现在 写一个main.c  调用 这个fun, 需要用到 这个 动态库,  

我 把 $LD_LIBRARY_PATH 在/etc/profile 设置了这个 目录   所以 这个时候 我 直接 gcc main.c -ltest  能编译成功,运行成功

可是 奇怪的 是,我将 mv libtest.so libtest123.so  这时候 按道理 gcc main.c -ltest123 应该也能编译成成功,可是不行,  需要 gcc main.c -ltest123 -L. 才能编译 运行成功


我就在怀疑 是不是 有什么东西 缓存 在哪边 ,有可能是 什么 ld.so.cache  可是我 运行一遍 sudo ldconfig 也还是一样,这 该 怎么办,

求 高手 ,跪谢

论坛徽章:
4
白羊座
日期:2013-09-17 21:59:30技术图书徽章
日期:2013-10-12 22:16:03白羊座
日期:2013-10-14 11:01:40双子座
日期:2013-12-17 18:26:39
2 [报告]
发表于 2013-12-10 19:53 |只看该作者
LD_LIBRARY_PATH只影响运行的时候,对编译时没作用。
你应当是别的地方有libtest.so

论坛徽章:
0
3 [报告]
发表于 2013-12-11 10:35 |只看该作者
只 影响运行的呀,这有点和我 一开始理解的 出入 好大,
刚找了下,确实 在/usr/local/lib/ 里面 有一个 libtest.so  ,
那我 该怎么 影响编译呢,就是 怎么 在编译的 时候不需要 加-L  来增加寻找路径呢
是 使用 ldconfig 吗?
回复 2# 井蛙夏虫


   

论坛徽章:
0
4 [报告]
发表于 2013-12-11 11:11 |只看该作者
刚 有出来个小问题,不解,
我一个编译好的 a.out,  要使用 libtest.so    我故意 没有在环境变量,和ldconfig中 设置, 可是 我只要 把 a.out 和 libtest.so 放在同一个路径(无论哪个文件夹)就可以 运行, 不放在一起,就没办法 正常运行
编译的是使用  gcc main.c -L. -ltest
求解,难道 运行的时候 还有个  默认搜索路径就是  当前目录???
回复 2# 井蛙夏虫


   

论坛徽章:
4
白羊座
日期:2013-09-17 21:59:30技术图书徽章
日期:2013-10-12 22:16:03白羊座
日期:2013-10-14 11:01:40双子座
日期:2013-12-17 18:26:39
5 [报告]
发表于 2013-12-11 19:41 |只看该作者
本帖最后由 井蛙夏虫 于 2013-12-11 19:42 编辑

回复 4# homerzhou
ldconfig也是运行时的。编译时除了-L之外,我只知道更改ld链接控制脚本的方法,别的就不知道有没有了。
至于说默认搜索路径包括当前目录,不太清楚,在我的系统下测试了一下,不行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP