編譯出arm Android環境下的C++可執行文件

 要想編譯出arm環境的C++可執行文件主要就是利用交叉編譯器進行編譯。編譯過程自己都大同小異。linux

 

1.安裝交叉編譯器,交叉編譯器的安裝方法大體有下面幾種:ios

  A.debian/ubuntu 系統能夠直接輸入命令安裝:shell

sudo apt install g++-arm-linux-gnueabihf    

sudo apt install g++-8-arm-linux-gnueabihf        #這種方式還能夠指定版本

  B.直接下載交叉編譯器的二進制文件,arm官網下載地址,這個網站的下載速度比較慢,能夠baidu關鍵字gcc-arm-none-eabi尋找國內的下載地址,下載解壓,把解壓目錄加入PATH環境變量或者把解壓出來的文件複製到/usr/bin目錄ubuntu

  C.下載Android NDK,NDK裏面自帶了適用於Android的交叉編譯工具鏈,下載後在prebuilt目錄能夠找到工具

  D.下載gcc源代碼,手動編譯安裝測試

以上幾種方法除了手動編譯可能會遇到各類依賴問題之外,其他的都比較簡單,我這裏恰好使用的是ubuntu 18.04的系統,就採用A方法安裝的。網站

 

2.用交叉編譯器編譯代碼,如今寫一段很古老的程序,而後用交叉編譯器編譯:ui

#include<iostream>
using namespace std;

int main()
{
    cout << "hello world, from Android C++"  << endl;

    return 0;
}

執行命令編譯:  spa

arm-linux-gnueabihf-g++-8  -static  helloworld.cpp     # 必定要加上 -static 靜態連接的選項,否則編譯出來的a.out執行不了

 

3.將Android設備須要連上電腦,而後經過下面的步驟從新掛載Android爲可讀寫的code

adb root           # 該命令須要手機已經root
adb remount        
adb shell "mount -o rw,remount /system"    # rw 表示掛載爲可讀寫read/write

 掛載好了之後使用adb shell登陸到Android的shell環境,建立一個咱們本次測試使用的文件夾"helloworld"

而後使用adb命令把文件push到Android設備中去

adb push ./a.out /data/helloworld

 

4.再次登陸Android shell環境,爲a.out文件賦權限(若是已經有了可執行的權限就能夠不用再次賦權限了),而後運行a.out 

adb shell                #登陸Android shell環境

cd /data/helloworld      #進入a.out所在目錄

chmod 777 a.out          #賦權限爲777

./a.out                  #運行a.out

能夠看到,最終成功輸出了 "hello world, from Android C++"  。

相關文章
相關標籤/搜索