[请教] 加载动态库报错“ 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 友帮忙解答,谢谢了
1
momocraft 2017-12-21 13:41:03 +08:00 1
那个程序期待的 (链接到的) ABI 是否和你的.so 一致? ldd 可以正确地找到你提供的.so 吗?
|