【发布时间】:2014-09-03 10:27:57
【问题描述】:
我们使用具有库路径详细信息(使用 -L 选项编译)的 makefile 创建了我们模块的可执行文件。所有必需的库都存在于该路径中,并且设置为 LD_LIBRARY_PATH 环境变量。但我仍然得到在 dbx 中运行可执行文件时出现以下错误。
dbx MsgServer
For information about new features see `help changes'
To remove this message, put `dbxenv suppress_startup_message 7.2' in your .dbxrc
Reading MsgServer
Reading ld.so.1
ld.so.1: MsgServer: fatal: libcp.so: open
failed: No such file or directory
terminating signal 9 SIGKILL
我无法弄清楚为什么没有链接库。这是 ldd 的输出。
ldd MsgServer
libcp.so => (file not found)
libftux.so => (file not found)
libfldap.so => (file not found)
libfdmq.so => (file not found)
libfbsafe.so => (file not found)
libdmq.so => /opt/messageq/lib/libdmq.so
libmqic.so => /usr/lib/libmqic.so
libsocket.so.1 => /usr/lib/libsocket.so.1
libc.so.1 => /usr/lib/libc.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libCstd.so.1 => /usr/lib/libCstd.so.1
libCrun.so.1 => /usr/lib/libCrun.so.1
libm.so.1 => /usr/lib/libm.so.1
libw.so.1 => /usr/lib/libw.so.1
libthread.so.1 => /usr/lib/libthread.so.1
libmqmcs.so => /usr/lib/libmqmcs.so
librt.so.1 => /usr/lib/librt.so.1
libmqiz.so => /opt/mqm/lib/libmqiz.so
libmp.so.2 => /usr/lib/libmp.so.2
libaio.so.1 => /usr/lib/libaio.so.1
/usr/platform/SUNW,Sun-Fire/lib/libc_psr.so.1
/usr/lib/cpu/sparcv8plus/libCstd_isa.so.1
任何帮助将不胜感激。
【问题讨论】:
-
LD_LIBRARY_PATH 是否已导出?库是否在正确的目录中?这些库是否使用与您的应用相同的 ABI 和 CPU 编译?
-
LD_LIBRARY_PATH 已导出,当我回显该变量并且所有库都使用与我的应用程序相同的 CPU 编译时,我能够看到路径
-
二进制是 SUID(设置 UID)程序吗?还是您以root身份运行?您似乎在 Solaris 上运行。请注意,LD_LIBRARY_PATH 不适用于 SUID 程序。