免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 17262 | 回复: 26

动态库:gcc-L-l和gcc绝对路径的问题求助 [复制链接]

论坛徽章:
0
发表于 2010-05-19 16:29 |显示全部楼层
gcc test.c /home/xxx/libmyfunction.so -o test
编译通过,生成的test,./test可以执行
但是gcc test.c -L/home/xxx/ -lmyfunction -o test
编译也通过,生成test,但是./test报错
./test:error while loading shared libraries:libmyfunction.so can't open shared object file :No such file or directory
这是为什么。。。菜鸟一枚,初学gcc,恳请各位大大指教

论坛徽章:
0
发表于 2010-05-19 17:03 |显示全部楼层
export LD_LIBRARY_PATH=。。。。。。。。。。
让你这个库可以被搜索到

论坛徽章:
0
发表于 2010-05-19 17:03 |显示全部楼层
执行时。./test会去load动态链接库,默认去/lib/下面找,你吧你的libmyfunction.so 拷贝到/lib下。

或者设置环境变量 LD_LOAD_PATH=/home/xxx/

论坛徽章:
0
发表于 2010-05-19 17:07 |显示全部楼层
执行时。./test会去load动态链接库,默认去/lib/下面找,你吧你的libmyfunction.so 拷贝到/lib下。

或者 ...
liying_gg 发表于 2010-05-19 17:03


这两个方法我都知道,但是问题在于为什么直接用绝对路径却不需要去设置动态库的查找目录
我上面的那个两个动态库文件都是在同一个文件夹下面的。。。
说的更明白点就是-L和绝对路径是一样的时候,为什么有这样的差异

论坛徽章:
0
发表于 2010-05-19 17:23 |显示全部楼层
gcc test.c /home/xxx/libmyfunction.so -o test 会把/home/xxx/libmyfunction.so 记录到生成的test中

gcc test.c -L/home/xxx/ -lmyfunction -o test中的-L只是提供搜索路径,但不能确定libmyfunction.so是在你提供的路径下,还是在/lib或者/usr/lib下,所以test中没有记录这个.so的路径信息,所以ld-linux.so就找不到它了。

论坛徽章:
0
发表于 2010-05-19 18:51 |显示全部楼层
gcc test.c /home/xxx/libmyfunction.so -o test 会把/home/xxx/libmyfunction.so 记录到生成的test中

g ...
liying_gg 发表于 2010-05-19 17:23


受教了

那么是不是用-L的生成的可执行文件,一定要用以上的两种方法之一才能执行?

论坛徽章:
0
发表于 2010-05-19 22:50 |显示全部楼层
可直接进入目录再用吧

论坛徽章:
0
发表于 2010-05-20 08:47 |显示全部楼层
可直接进入目录再用吧
aaaaa5aa 发表于 2010-05-19 22:50


能不能说的再细致些,新人不是很懂。。。。

论坛徽章:
0
发表于 2010-05-20 09:45 |显示全部楼层
回复 8# ljwilliam


     别的办法肯定也有,但是就会比较复杂了。

论坛徽章:
0
发表于 2010-05-20 11:19 |显示全部楼层
前者生成exe时已经链接进去了。。。叫静态链接吧
后者程序启动时加载so。LD_LIBRARY_PATH容易忘记,我都是直接把自己的so路径加到/etc/ld.so.conf中去
ldonfig就一劳永逸了,这种叫动态链接
还有一种属于运行时打开的,执行到语句dlopen才去打开,跟普通文件一样,这个叫动态加载

http://www.ibm.com/developerworks/cn/linux/l-dynamic-libraries/

developerWorks 中国  >  Linux  >

Linux 动态库剖析
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP