我在RHL5平台上安装Term :: Readline :: Gnu cpan包。 构build正确完成,但在运行testing时,我正面临在t / callback.t中的以下错误:
perl:symbol lookup error:perl / 5.20.2 / ext / lib / libXrender.so.1:undefined symbol:_XGetRequest
我已经做了一些初步的检查,找出根本原因。
# ldd -d -r libXrender.so.1 => no undefined symbol linux-gate.so.1 => (0xffffe000) libX11.so.6 => [proper X11 library path] libxcb.so.1 => [proper Xcb library path] libXau.so.6 => [proper Xau library path] libXdmcp.so.6 => [proper Xdmcp library path] libdl.so.2 => /lib/libdl.so.2 (0xf7dc70000 libc.so.6 => /lib/libc.so.6 (0xf7c6b000) /lib/ld-linux.so.2 (0x00824000)
库path不是像/ usr / lib这样的标准path
# readelf -a libXrender.so.1 | grep "_XGetRequest" 00009e2c 00003107 R_386_JUMP_SLOT 00000000 _XGetRequest 49: 00000000 0 FUNC GLOBAL DEFAULT UND _XGetRequest 113: 00000000 0 FUNC GLOBAL DEFAULT UND _XGetRequest
readelf -a libXrender.so.1 | grep RPATH
readelf -a libXrender.so.1 | grep RPATH
正确的X11库path存在。
我发现libX11.so.6包含该符号。
我的问题是:
尽pipeX11库path正确放置在libXrender的RPATH中,但为什么找不到sybmol呢?
再次,当我设置适当的x11库path的LD_LIBRARY_PATH envvariables时,testing正在传递。 我也尝试使用-rdynamic选项进行dynamic加载,并在链接阶段维护正确的库pathsorting,但没有用处。