2

公正な警告私はGCC開発に少し慣れていません。

私は現在、Box2D を android (tech arm) に個人的に移植しようとしています。スタンドアロンのツールチェーンを作成し、以下をエクスポートします....

export PATH=/tmp/my-android-toolchain/bin:$PATH

export CC=arm-linux-androideabi-gcc

export CXX=arm-linux-androideabi-g++

次に、Make を実行すると、すべてが正常に動作しているように見えますが、最終的には...

/private/tmp/my-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: エラー: bin/Debug/ libBox2D.a: アーカイブ シンボル テーブルがありません (ranlib を実行) /private/tmp/my-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: obj/ Debug/HelloWorld/Helloworld.o: 関数 main:../../HelloWorld/Helloworld.cpp:38: エラー: 'b2World::b2World(b2Vec2 const&)' /private/tmp/my-toolchain/ への未定義の参照bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: obj/Debug/HelloWorld/Helloworld.o: で関数 main:../../HelloWorld/Helloworld.cpp:47: エラー: 'b2World::CreateBody(b2BodyDef const*)' への未定義の参照 /private/tmp/my-toolchain/bin/../lib/gcc /arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: obj/Debug/HelloWorld/Helloworld.o: in function main:../.. /HelloWorld/Helloworld.cpp:53: エラー: 'b2PolygonShape::SetAsBox(float, float)' への未定義の参照

新しいターミナルを開いて (本質的にエクスポートを強制終了)、bin および obj フォルダーを削除すると、すべて正常にコンパイルされます。Googleで簡単に検索すると、これはGCCの代わりにllvmコンパイラを使用していることに関連している可能性があることが示唆されています(ただし、私のCCではこれはあまりありそうにないと思います)。スタンドアロン ツールチェーンのドキュメントには、llvm に関する次の手順があります。

必要に応じて、--llvm-version=3.1 を追加して、clang/llvm 3.1 もコピーします。

llvm を追加する必要がありますか? これは、バイオニックが異なるという問題ですか?

ありがとう!

4

1 に答える 1

8

OSX バージョンの ar を使用している可能性があります。あなたのログからは確実にわかりません。設定してみるexport AR=arm-linux-androideabi-ar

于 2013-01-16T15:03:04.900 に答える