使用Make on OSX为Android编译

时间:2013-01-16 14:56:44

标签: android gcc android-ndk makefile

公平警告我对GCC的发展有点新鲜。

我目前正在尝试将Box2D的个人端口用于android(技术部门)。我创建了一个独立的工具链,导出以下内容....

  

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

     

导出CC = arm-linux-androideabi-gcc

     

导出CXX = arm-linux-androideabi-g ++

然后我运行Make,一切“看起来”运行正常,但是,最后我看到......

  

/私人/ TMP /我的工具链/ bin中/../ LIB / GCC /臂-Linux的androideabi / 4.6 /../../../../臂-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:在函数main中:../../ HelloWorld / Helloworld.cpp:53:错误:未定义引用'b2PolygonShape :: SetAsBox(float,float)'

如果我打开一个新的终端(基本上杀死导出)并删除bin和obj文件夹,一切都编译好了。一个快速的谷歌搜索建议这可能与使用llvm编译器而不是GCC相关(尽管我的CC我觉得这不太可能)。在独立工具链文档中有以下llvm说明...

  

如果您愿意,可以添加--llvm-version = 3.1来复制clang / llvm 3.1。

我应该添加llvm吗?这是仿生学的一个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:8)

您可能正在使用OS的OSX版本。无法确定您的日志。尝试设置export AR=arm-linux-androideabi-ar