在ubuntu上交叉編譯helloWorld到arm64的android手機(jī)上去。
這里NDK用的是r19及以上的版本。
1. 安裝NDK
從下面的鏈接下載NDK,并解壓:
https://developer.android.google.cn/ndk/downloads/
這里下載了 android-ndk-r21b,解壓到 /home/temp/programs/android-ndk-r21b

2. 寫(xiě)main.cpp文件
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
3. 寫(xiě)交叉編譯腳本 generate.sh
由于命令比較短,也可直接在命令行里寫(xiě)。
新建generate.sh,并給執(zhí)行權(quán)限 : chmod +x generate.sh
export NDK=/home/temp/programs/android-ndk-r21b
$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android26-clang++ \
main.cpp -o hello
使用了NDK 默認(rèn)安裝的工具鏈,按照官網(wǎng)說(shuō)明,NDK在r19之后,NDK 默認(rèn)安裝的工具鏈可供使用。
可以不需要使用 make_standalone_toolchain.py 腳本生成獨(dú)立工具鏈來(lái)使用。
這樣使用自帶的工具鏈就比較方便,不用再配置sysroot等編譯選項(xiàng)。
其中NDK為自己解壓的目錄。
編譯器要選擇自己手機(jī)的架構(gòu),這里用的是arm64,所以是aarch64-linux-android。
編譯器要選擇android的api版本,這里用的是anroid 8.0.0,對(duì)應(yīng)api是26。
Android NDK從r13起,默認(rèn)使用Clang進(jìn)行編譯。
交叉編譯出可執(zhí)行程序hello
./generate.sh
4. 放到手機(jī)上執(zhí)行
4.1 安裝adb工具
ubuntu下 :
sudo apt install android-tools-adb android-tools-fastboot
4.2 push到手機(jī)
adb push hello /data/local/tmp
4.3 給hello執(zhí)行權(quán)限
adb shell
cd /data/local/tmp
chmod +x hello
4.4 執(zhí)行hello
./hello
可以看到輸出
hello world
5. 參考
https://developer.android.com/ndk/guides/other_build_systems