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