请问“ld: fatal: Symbol referencing errors.”这种报错 是什么原因,谢谢了

2017-12-20 11:19:58 +08:00
 jimy1

我之前编译时链接的 oracle 11g 的 libaidb_ora.so ,没有这个问题,发送给客户,客户说他们用的是 oracle 10g 的,所以我把 libaidb_ora.so 换成了客户现场的 oracle 10g 的版本,重新编译 psagent_single 报错

编译命令如下:

CC -g -DSunOS -o psagent_single ps_main.o ps_global.o ABSDatabase.o ps_config_attr.o ps_shlib.o ps_action.o ps_config.o ps_prov_record.o ps_provision.o datetime.o ps_daemon.o ps_pid_file.o ps_queue.o  -L/tank/data/build/test1/obs61_vb3.3/center/lib -L/aitools/lib -L/tank/data/build/test1/obs61_vb3.3/platform/lib   -L/tank/data/build/test1/obs61_vb3.3/sdk/lib -lldap -llber -laidb_ora -ltcl8.2 -laiplatform -ldes -ldesm   -lclogfile -ldl

报错信息:

Undefined                       first referenced
 symbol                             in file
cout                                /tank/data/build/test1/obs61_vb3.3/platform/lib/libaidb_ora.so
unsafe_ostream::operator<<(long)              /tank/data/build/test1/obs61_vb3.3/platform/lib/libaidb_ora.so
operator delete(void*)                            /tank/data/build/test1/obs61_vb3.3/platform/lib/libaidb_ora.so
operator new(unsigned int)                            /tank/data/build/test1/obs61_vb3.3/platform/lib/libaidb_ora.so
Iostream_init::Iostream_init(void)               /tank/data/build/test1/obs61_vb3.3/platform/lib/libaidb_ora.so
Iostream_init::~Iostream_init(void)               /tank/data/build/test1/obs61_vb3.3/platform/lib/libaidb_ora.so
aiCfg::getHandler(void)              /tank/data/build/test1/obs61_vb3.3/platform/lib/libaidb_ora.so
endl(ostream&)                 /tank/data/build/test1/obs61_vb3.3/platform/lib/libaidb_ora.so
unsafe_ostream::outstr(const char*, const char*)     /tank/data/build/test1/obs61_vb3.3/platform/lib/libaidb_ora.so
ld: fatal: Symbol referencing errors. No output written to psagent_single
make: *** [psagent_single] Error 1
2041 次点击
所在节点    C
4 条回复
nyanyh
2017-12-20 11:27:32 +08:00
找不到符号? 10g 11g 是不是有 API 差异
gnaggnoyil
2017-12-20 11:36:09 +08:00
@nyanyh api 差异就直接编译报错了.编译没问题链接器提示未定义符号的话明显编译器版本不同导致的 abi 差异,而且版本差的还挺远

看详细错误目测直接原因是 libaidb_ora.so 和 lz 机子上的 cpp runtime 的 abi 没对上号.lz 要不先比对一下编译器版本?
jimy1
2017-12-20 12:03:30 +08:00
谢谢 2 位回复,我都再看看
hackpro
2017-12-21 14:25:23 +08:00
nm 看一下未定义的符号
两个版本上都比对一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/416217

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX