我使用gcc 4.9.2进行应用程序构建。我有静态链接libstdc ++和libgcc 以解决兼容性问题。该程序在我测试的许多Linux发行版中运行良好。但在一个系统中,我发现以下错误
Symbol Look up error: undefined symbol: _ZNSt8messagesIwE2idE
我在errror上运行了c ++ filt,它给出了结果
echo _ZNSt8messagesIwE2idE | C ++ FILT
std::messages<wchar_t>::id
运行文件命令会产生以下结果
文件应用
app: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), for GNU/Linux 2.6.32, dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped
运行ldd给出,
ldd app 不是动态可执行文件
但它是一个动态可执行文件。同一个文件在其他类似的机器上运行。
uname给出
uname -a
Linux el-rhel5-1 2.6.18-164.el5PAE #1 SMP Tue Aug 18 15:59:11 EDT 2009 i686 i686 i386 GNU/Linux
感谢。
答案 0 :(得分:0)
为什么我得到“不是动态可执行文件”的消息,即使它是可执行的?
ldd
如果无法识别文件格式或发生其他错误,也会给出该消息。
您确定该文件与其他计算机上的文件完全相同吗?您可以使用md5sum
验证它在每台计算机上是否相同,并且在ldd
无法读取它的计算机上没有损坏,并且它会给出符号查找错误。