符号查找错误:未定义符号:_ZN St8messagesIwE2idE

时间:2015-01-20 12:21:27

标签: linux gcc libstdc++

我使用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
  1. 为什么我得到“不是动态可执行文件”的消息,即使它是可执行的?
  2. 这个错误意味着什么,解决这个问题的方法是什么?
  3. 感谢。

1 个答案:

答案 0 :(得分:0)

  

为什么我得到“不是动态可执行文件”的消息,即使它是可执行的?

ldd如果无法识别文件格式或发生其他错误,也会给出该消息。

您确定该文件与其他计算机上的文件完全相同吗?您可以使用md5sum验证它在每台计算机上是否相同,并且在ldd无法读取它的计算机上没有损坏,并且它会给出符号查找错误。