构建NDK交叉编译链

时间:2022-09-18 09:36:07

有时我们需要单独编译个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