Android gcc sysroot和链接器

我正在使用Ubuntu Linux 10.0.4上的Android NDK Linux构建编译一个简单的程序。

//no includes!!! int main() { int a = 1, b = 2, c = -1; return a + b + c - ( a + b + c); } 

当我为gcc运行这个bash脚本时,

 bin='/media/sdb/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin' rm -r ./obj/*.* $bin/arm-linux-androideabi-gcc -c ./main.c -o ./obj/main.o $bin/arm-linux-androideabi-gcc ./obj/main.o -o ./obj/main.exe 

gcc的输出给出了来自ld ( arm-linux-androideabi-ld )的消息,它终止为7(第二个以逗号分隔的是ARM)信号。

这个简单的程序甚至不会在Linux上编译,请帮忙!

我在ubuntu 12.4中安装了静态工具链

 sudo apt-get install gcc-arm-linux-gnueabi // install this toolchain arm-linux-gnueabi-gcc -static -o main.exe main.c // this way compile ur binary 

通过android机器中的adb复制并运行

 ./main.exe 

这适用于我的Android手机。

编辑:

为10.04

  sudo add-apt-repository ppa:linaro-maintainers/toolchain sudo apt-get update sudo apt-get install gcc-arm-linux-gnueabi 

Edit2:它的静态编译在这里它不使用仿生代码,它通过将它们复制到ELF中来包含库。

如果你想动态编译或想要依赖仿生代码那么使用

$ NDK / docs / STANDALONE-TOOLCHAIN.html https://android.googlesource.com/platform/ndk/+/master/docs/STANDALONE-TOOLCHAIN.html