免费注册 查看新帖 |

Chinaunix

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

GNU链接程序: 这算不算狗拿耗子 [复制链接]

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-12 18:15 |只看该作者 |倒序浏览
比如: 一个程序a链接了b.so, b.so引用了c.so
当连接a的时候, 能够找到b.so, 但找不到c.so
链接程序就罢工不干了。

我倒是感觉这纯粹是多管闲事了, 因为理论上链接的时候c.so和a没有关系的
我碰到的例子:

zylthinking@zylthinking:/usr/local/src/v3/source/step1/server/vtdu$ make
g++ -o bin/vtduserver VTDUClient.o CSocket.o regtable.o mem_pool.o dev.o stdafx.o -I.  -L./bin/so -lpthread -lhcnetsdk
/usr/bin/ld: warning: libm4play.so, needed by ./bin/so/libhcnetsdk.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libstdc++.so.5, needed by ./bin/so/libhcnetsdk.so, may conflict with libstdc++.so.6
./bin/so/libhcnetsdk.so: undefined reference to `Hik_PlayM4_GetCurrentFrameNum'
... ...
collect2: ld 返回 1
make: *** [all] 错误 1

libm4play.so和libhcnetsdk.so放在 ./bin/so文件夹下, vtduserver 要声称在 ./bin 下, 其直接引用了 libhcnetsdk.so, 为了链接时能够找到, 使用了 -L./bin/so, -lhcnetsdk, 但链接硬是通不过, 因为找不到 libm4play.so, 因此 libhcnetsdk.so 内部调用的 Hik_PlayM4_GetCurrentFrameNum 等函数找不到, 但我感觉链接 vtduserver 根本没必要寻找 Hik_PlayM4_GetCurrentFrameNum, 这个应该是在生成 libhcnetsdk.so 时的工作。

论坛徽章:
0
2 [报告]
发表于 2007-12-12 21:42 |只看该作者
通常的情况下,这里链接的需要啊!库在,没有道理链接不过的。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
3 [报告]
发表于 2007-12-12 22:40 |只看该作者
Parden?

有没有什么办法解决这样的问题, 除了将 libm4play.so 放在 /usr/local/lib 等目录下
而且, 我指定的 -L./bin/so 只能够找到 libhcnetsdk.so, 居然找不到同文件夹下的 libm4play.so
真是郁闷了

论坛徽章:
0
4 [报告]
发表于 2007-12-13 01:11 |只看该作者
在仔细的分析下。。一定有原因被忽略了。。

论坛徽章:
0
5 [报告]
发表于 2007-12-13 09:13 |只看该作者
大不了把路径写在LD_LIBRARY_PATH

论坛徽章:
0
6 [报告]
发表于 2007-12-13 13:18 |只看该作者

回复 #1 zylthinking 的帖子

用的什么编译器什么操作系统?这个跟编译器的关系大大的......

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
7 [报告]
发表于 2007-12-13 14:04 |只看该作者
zylthinking@zylthinking:~/hk$ g++ --v
使用内建 specs。
目标:i486-linux-gnu
配置为:../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.1.3 --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release i486-linux-gnu
线程模型:posix
gcc 版本 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)

应该和操作系统没关系的吧, 我将LD_LIBRARY_PATH设置好, 或者将其放到 /usr/local/lib等目录自然没问题, 问题是这样前一个麻烦, 后一个就是分开放了, 不能将所有文件都放到一个目录下

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
8 [报告]
发表于 2007-12-13 19:02 |只看该作者
原帖由 zylthinking 于 2007-12-12 22:40 发表
Parden?

有没有什么办法解决这样的问题, 除了将 libm4play.so 放在 /usr/local/lib 等目录下
而且, 我指定的 -L./bin/so 只能够找到 libhcnetsdk.so, 居然找不到同文件夹下的 libm4play.so
真是郁闷了

加上 -L. -lm4play

注意将 -lm4play 放在最后。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
9 [报告]
发表于 2007-12-13 19:20 |只看该作者
但为什么要加呢, 如果 -lm4play 又依赖别的, 别的又依赖别别的 。。。
问题是这个明显是不需要的, 现在就是感觉 linker 多管闲事

论坛徽章:
0
10 [报告]
发表于 2007-12-14 03:23 |只看该作者
原帖由 zylthinking 于 2007-12-13 19:20 发表
但为什么要加呢, 如果 -lm4play 又依赖别的, 别的又依赖别别的 。。。
问题是这个明显是不需要的, 现在就是感觉 linker 多管闲事


什么是明显不需要啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP