librtld_db无法初始化

时间:2017-04-19 14:37:03

标签: c++ makefile cmake solaris

  1. 我在Solaris上使用旧的和混乱的Makefile进行了大项目。
  2. 我为同一个项目编写了CMakeLists.txt,基于那些Makefile。
  3. 我可以编译旧方法到它的目录并获取MyBinary(1),并使用CMake编译到另一个目录并获取MyBinary(2)
  4. ldd MyBinary(X)在两个变体中完全相同(表示库的顺序不同,但是一对一的库相同)
  5. 在Linux& Windows这个CMake脚本可以正常工作,而不是没有问题的旧Makefile。
  6. 但是当我尝试运行MyBinary(2)时在Solaris上,我总是收到错误:Illegal Instruction (core dumped),下一个pstack core

    core 'core' of 1559:    ./MyBinary
     ffffffff7f728d20 ???????? (0, 0, 0, 0, 0, 0)
     0000000000000000 ???????? (0, 0, 0, 0, 0, 0)
    pstack: warning: librtld_db failed to initialize; symbols from shared libraries will not be available
    

    当我对MyBinary(1)执行相同操作时,它已成功运行。

    Google提示问题可能出在LD_LIBRARY_PATH / PATH。但是当我将MyBinary(2)放到MyBinary(1)的位置时,问题仍然存在(但LD_LIBRARY_PATH / PATH原因应该得到解决)

    man librtld_db暗示librtld_db是运行时调试库,但我接下来做了cmake命令:

    CXX=CC CC=cc cmake -DCMAKE_BUILD_TYPE=Release .. 
    

    因此编译器的使用方式与MyBinary(1)相同,版本为Release。在CMake内部,它有相同的指令(包括-m64)。

    那我为什么要这个Illegal Instruction (core dumped)

0 个答案:

没有答案