Android gcc sysroot和链接器

时间:2013-02-04 05:18:30

标签: c gcc android-ndk

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

//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的输出会从ldarm-linux-androideabi-ld)发出一条消息,表明它已作为7 (second comma-delimited is ARM)信号终止。

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

1 个答案:

答案 0 :(得分:1)

我在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