2

公平警告我对 GCC 开发有些陌生。

我目前正在尝试将 Box2D 的个人端口移植到 android(技术臂)。我创建了一个独立的工具链,导出以下....

导出 PATH=/tmp/my-android-toolchain/bin:$PATH

导出 CC=arm-linux-androideabi-gcc

导出 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/调试/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: 在函数 main:../.. /HelloWorld/Helloworld.cpp:53:错误:未定义对 'b2PolygonShape::SetAsBox(float, float)' 的引用

如果我打开一个新终端(基本上是终止导出)并删除 bin 和 obj 文件夹,一切编译正常。一个快速的谷歌搜索表明这可能与使用 llvm 编译器而不是 GCC 相关(尽管我认为这不太可能)。独立工具链文档中有以下关于 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 回答