[请教] 加载动态库报错“Connection_Init: 参照的符号没有找到”,此动态库由 3 个.o 文件生成,其中一个.o 文件是包含这个“Connection_Init”函数的,求解,谢谢了

2017-12-21 13:21:01 +08:00
 jimy1

[请教] 加载动态库报错“ Connection_Init: 参照的符号没有找到”,此动态库由 3 个.o 文件生成,其中一个.o 文件是包含这个“ Connection_Init ”函数的,求解,谢谢了

在 sun 平台 Solaris10 运行一个程序需要加载“ libpsmdb.so ”,报错信息如下:

  SERVICE(6010001) OBS-PS-1006:服务开通动态库装载错误(libpsmdb.so):error[couldn't load file "libpsmdb.so": ld.so.1: psagent_single: 致命的: 重定位错误: 文件 /tank/data1/obshlj/lib/libpsmdb.so: 符号 Connection_Init: 参照的符号没有找到]

libpsmdb.so ”由 3 个.o 文件生成( clogfile.o psmdb.o sockmdb.o ),报错符号对应函数在“ psmdb.cc ”文件里面能找到:

  t5240-1 yanwei 22 % grep Connection_Init ./*
./psmdb.cc:int Connection_Init(Tcl_Interp *interp);
./psmdb.cc:          if(Connection_Init(interp) != TCL_OK) {

如下是用 3 个.o 生成“ libpsmdb.so ”的命令

CC -I/tank/data/build/test1/obs61_vb3.3/platform/include -L/tank/data/build/test1/obs61_vb3.3/platform/lib -G -o libpsmdb.so clogfile.o psmdb.o sockmdb.o -ldes -laicrypt -lframe -lCrun -lm -lc -lnsl -lsocket

3 个.o 生成的命令:

CC -I/tank/data/build/test1/obs61_vb3.3/platform/include -L/tank/data/build/test1/obs61_vb3.3/platform/lib  -I/tank/data/build/test1/obs61_vb3.3/platform/include -O  -KPIC -I. -I/tank/data/build/test1/obs61_vb3.3/platform/include -I/aitools/include     -c clogfile.cc -o clogfile.o
CC -DORACLE -DAIDB2 -DNO_CONST -DUSE_NON_CONST -g -I/tank/data/build/test1/obs61_vb3.3/platform/include -L/tank/data/build/test1/obs61_vb3.3/platform/lib -I/aitools/include -O -KPIC -c psmdb.cc -o psmdb.o
CC -I/tank/data/build/test1/obs61_vb3.3/platform/include -L/tank/data/build/test1/obs61_vb3.3/platform/lib  -I/tank/data/build/test1/obs61_vb3.3/platform/include -O  -KPIC -I. -I/tank/data/build/test1/obs61_vb3.3/platform/include -I/aitools/include     -c sockmdb.cc -o sockmdb.o 

请知道的 v 友帮忙解答,谢谢了

1884 次点击
所在节点    C
1 条回复
momocraft
2017-12-21 13:41:03 +08:00
那个程序期待的 (链接到的) ABI 是否和你的.so 一致? ldd 可以正确地找到你提供的.so 吗?

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

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

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

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

© 2021 V2EX