符号查找错误:./ executableName:未定义符号:_ZN18QXmlDefaultHandlerC2Ev

时间:2014-08-08 15:47:20

标签: linux qt linker shared-libraries symbol-table

我正在尝试在Linux Mint 16 x64上运行可执行文件,该文件是为Ubuntu 12 x64编译的。 可执行文件在运行时动态使用Qt 5.1.1。我收到错误:

loaded the dummy plugin 
loaded the Linux plugin 
updating server status 
./executableName: symbol lookup error: ./executableName: undefined symbol: _ZN18QXmlDefaultHandlerC2Ev

当我跑步时

ldd executableName | grep "not found"

搜索缺少的依赖项我没有得到结果;似乎找到了所有动态依赖关系,但上面的未定义符号错误仍然存​​在。

思想?

2 个答案:

答案 0 :(得分:24)

快速帮助:

$ echo _ZN18QXmlDefaultHandlerC2Ev|c++filt
QXmlDefaultHandler::QXmlDefaultHandler()

因此,您没有QXmlDefaultHandler的构造函数。谷歌搜索我们可以在这里找到,至少Qt-4.8和Qt-5.3包含这个库。

我认为,实际运行的Qt库与编译可执行文件之间存在某种类型的不兼容性。我的建议是从源代码重新编译该可执行文件,但是

从ubuntu移植源包对你来说有点困难并非不可能,在这种情况下我建议一个简单的上游源重新编译(如果有的话,甚至是二进制下载)。

答案 1 :(得分:2)

你不能像这样在Mint上运行Ubuntu二进制文件;二进制文件在分布之间通常不是二进制兼容的。你能找到Mint构建吗?如果没有,你必须自己构建它。