免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 2010-05-19 17:03 |只看该作者
export LD_LIBRARY_PATH=。。。。。。。。。。
让你这个库可以被搜索到

论坛徽章:
0
3 [报告]
发表于 2010-05-19 17:03 |只看该作者
执行时。./test会去load动态链接库,默认去/lib/下面找,你吧你的libmyfunction.so 拷贝到/lib下。

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

论坛徽章:
0
4 [报告]
发表于 2010-05-19 17:07 |只看该作者
执行时。./test会去load动态链接库,默认去/lib/下面找,你吧你的libmyfunction.so 拷贝到/lib下。

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


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

论坛徽章:
0
5 [报告]
发表于 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
6 [报告]
发表于 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
7 [报告]
发表于 2010-05-19 22:50 |只看该作者
可直接进入目录再用吧

论坛徽章:
0
8 [报告]
发表于 2010-05-20 08:47 |只看该作者
可直接进入目录再用吧
aaaaa5aa 发表于 2010-05-19 22:50


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

论坛徽章:
0
9 [报告]
发表于 2010-05-20 09:45 |只看该作者
回复 8# ljwilliam


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

论坛徽章:
0
10 [报告]
发表于 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 动态库剖析
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP