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
プロデュース:
00002810 g F .text 000000ac _ZN13TiXmlDocumentC1Ev
したがって、シンボルは明らかにライブラリ ファイルに存在します。
一部のグーグルは、ライブラリの順序を変更することを提案しましたが、リンクされている唯一のライブラリです(もちろん、ランタイム ライブラリ以外)。
g ++のpowerpcバージョンである別のプロジェクトのために、このライブラリを構築してリンクしました。
もう推測はありません。ここで何が欠けているのでしょうか?