Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linker 对库中明确存在的符号的未定义引用_Linker_G++_Arm - Fatal编程技术网

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

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 如果我

我已经将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

如果我删除库文件,链接器会报告它找不到该文件,因此我们知道它找到了该文件(并且我们知道下面的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生成库和测试程序所做的所有工作。我已将源文件直接添加到我的项目中。虽然不是很理想,但对于这个特定的嵌入式系统来说已经足够好了。我需要关闭那个工作项。