c - ld.so 无法加载所需的库

标签 c gcc

我们使用具有库路径详细信息(使用 -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 导出了吗?您需要将其导出。

关于c - ld.so 无法加载所需的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25641990/

相关文章:

c++ - SDL2 内存泄漏 C++

c++ - 不是最后一个模板参数的推导和参数包 : is this valid code?

c++ - GMOCKing 接口(interface)时 std::any 的不完整类型

c - 在编译时检测段错误

c - gromacs 编译给出 undefined reference 错误

c - 将 C 数组初始化为自定义字符

c - 用位域初始化结构常量数组

c - 在多线程中传递 int 值的意外结果,C

c++ - 使用分析标志编译的代码不会生成 gmon.out

c - 我正在编写一个 lex 代码,其中正则表达式部分的给出与详细部分中的完全相同。我遇到的主要问题是文本的 RE