Linker 对库中明确存在的符号的未定义引用
我已经将TinyXML构建为一个静态库:libxmltiny.a 一个简单的测试程序:Linker 对库中明确存在的符号的未定义引用,linker,g++,arm,Linker,G++,Arm,我已经将TinyXML构建为一个静态库:libxmltiny.a 一个简单的测试程序: #include <tinyxml/tinyxml.h> void main() { TiXmlDocument doc; doc.Parse(""); } #包括 void main() { TiXmlDocument文档; 解析文件(“”); } 两者都使用相同的g++编译器编译,即: arm-unknown-linux-uclibcgnueabi-g++4.6.2 如果我
#include <tinyxml/tinyxml.h>
void main()
{
TiXmlDocument doc;
doc.Parse("");
}
#包括
void main()
{
TiXmlDocument文档;
解析文件(“”);
}
两者都使用相同的g++编译器编译,即:
arm-unknown-linux-uclibcgnueabi-g++4.6.2
如果我删除库文件,链接器会报告它找不到该文件,因此我们知道它找到了该文件(并且我们知道下面的objdump位于同一个文件上)
(几个错误中的第一个)友好错误是:
test.cpp:(.text.startup+0x58):未定义对的引用
TiXmlDocument::TiXmlDocument()
如果我使用-Xlinker--demangle=none
抑制Demanling:
test.cpp:(.text.startup+0x58):未定义对的引用
_zn13tic1ev
按如下方式转储库文件:
$objdump-t libtinyxml.a | grep)zn13tixmlcdocumentc1ev
产生:
00002810 g F.text 000000 ac_zn13; tixmlcdocumentc1ev
因此,该符号显然存在于库文件中
一些Google建议我更改库顺序,但它是唯一链接到的库(当然不是运行库)
我为另一个项目构建并链接了这个库,该项目是g++的powerpc版本
我不再猜测了。我在这里可能遗漏了什么?您能展示一下您的汇编行吗?@Constantius感谢您表达的兴趣。我已经从这里开始了,删除了我为让BuildRoot生成库和测试程序所做的所有工作。我已将源文件直接添加到我的项目中。虽然不是很理想,但对于这个特定的嵌入式系统来说已经足够好了。我需要关闭那个工作项。