对库中明显存在的符号的未定义引用

时间:2013-02-11 17:23:35

标签: linker g++ arm

我已将TinyXML构建为静态库:libxmltiny.a

一个简单的测试程序:

#include <tinyxml/tinyxml.h>
void main()
{
    TiXmlDocument doc;
    doc.Parse("");
}

两者都使用相同的g ++编译器编译,即: arm-unknown-linux-uclibcgnueabi-g++ 4.6.2

如果删除库文件,链接器会报告它找不到该文件,因此我们知道它找到了该文件(我们知道下面的objdump位于同一个文件中)。

(第一个)友好错误是:

  

test.cpp :(。text.startup + 0x58):未定义的引用   TiXmlDocument :: TiXmlDocument()

如果我用-Xlinker --demangle=none来抑制解码:

  

test.cpp :(。text.startup + 0x58):未定义的引用   _ZN13TiXmlDocumentC1Ev

像这样转储库文件:

  

$ objdump -t libtinyxml.a | grep _ZN13TiXmlDocumentC1Ev

产地:

  <00> 00002810 g F .text 000000ac _ZN13TiXmlDocumentC1Ev

因此符号清楚地存在于库文件中!

一些谷歌搜索建议我更改库顺序,但它是链接到的唯一库(当然不是运行时库)。

我已经为另一个项目构建并链接了这个库,这个项目是g ++的powerpc版本。

我没有更多的猜测。我可能会在这里失踪什么?

0 个答案:

没有答案