1

我正在使用基于 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 上编译,请帮助!

4

1 回答 1

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

这适用于我的安卓手机。

编辑:

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

于 2013-02-04T07:16:28.247 回答