有时我们需要单独编译个c文件,生成一个ELF在Android上面跑,NDK提供了一个 make-standalone-toolchain.sh 脚本,用于生成一套特定平台的交叉编译工具链
使用方法如下:
kiiim@ubuntu :~/aosp/android-ndk-r10d$ ./build/tools/make-standalone-toolchain.sh --arch=arm --platform=android-21 --install-dir=~/ndk_arm_android21 --toolchain=arm-linux-androideabi-4.9 --system=linux-x86_64 Copying prebuilt binaries... Copying sysroot headers and libraries... Copying c++ runtime headers and libraries... Copying files to: ~/ndk_arm_android21 Cleaning up... Done.
简记一下参数设置:
–arch 选择目标平台,除了arm还有下面几种:
Toolchain Value mips64 compiler --arch=mips64 mips GCC 4.8 compiler --arch=mips x86 GCC 4.8 compiler --arch=x86 x86_64 GCC 4.8 compiler --arch=x86_64 mips GCC 4.8 compiler --arch=mips
–platform 设置Anroid API Level
–install-dir 指定生成的工具链目录
–toolchain 设置编译器环境,可以是GCC或者CLANG
Toolchain Value arm --toolchain=arm-linux-androideabi-4.8 --toolchain=arm-linux-androideabi-4.9 --toolchain=arm-linux-android-clang3.5 --toolchain=arm-linux-android-clang3.6 x86 --toolchain=x86-linux-android-4.8 --toolchain=x86-linux-android-4.9 --toolchain=x86-linux-android-clang3.5 --toolchain=x86-linux-android-clang3.6 mips --toolchain=mips-linux-android-4.8 --toolchain=mips-linux-android-4.9 --toolchain=mips-linux-android-clang3.5 --toolchain=mips-linux-android-clang3.6 arm64 --toolchain=aarch64-linux-android-4.9 --toolchain=aarch64-linux-android-clang3.5 --toolchain=aarch64-linux-android-clang3.6 x86_64 --toolchain=x86_64-linux-android-4.9 --toolchain=x86_64-linux-android-clang3.5 --toolchain=x86_64-linux-android-clang3.6 mips64 --toolchain=mips64el-linux-android-4.9 --toolchain=mips64el-linux-android-clang3.5 --toolchain=mips64el-linux-android-clang3.6
–system 指定工作环境,比如在ubuntu 64位下,就指定linux-x86_64,其它平台还有:
Host toolchain Value 64-bit Linux -system=linux-x86_64 64-bit MacOSX -system=darwin-x86_64 64-bit Windows -system=windows-x86_64
参考:
https://developer.android.com/ndk/guides/standalone_toolchain.html
来源:https://www.cnblogs.com/gm-201705/p/9864054.html