MyBinary(1)
,并使用CMake编译到另一个目录并获取MyBinary(2)
。ldd MyBinary(X)
在两个变体中完全相同(表示库的顺序不同,但是一对一的库相同)但是当我尝试运行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)
?