在linux上交叉編譯helloWorld到android手機(jī)上去

在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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容