2,根據ndk裡docs文件裡的standalone-toolchain.html來抽取交叉編譯的環境。
3,配置sysroot環境變數: sysroot=$ndk/platforms/android-8/arch-arm //android-8是你的android開發版本所定
4,然後執行命令:
$ndk/build/tools/make-standalone-toolchain.sh --platform=android-18 --install-dir=~/androidtoolchain
~/androidtoolchain 是你交叉編譯環境的複製路徑。這個新生成的資料夾即是你的交叉編譯環境。
5,配置paht和cc環境變數:
export path=~/androidtoolchain:$path
export cc=arm-linux-androideabi-gcc
如果需要長久有效,在 ~/.bashrc 裡加上 export path=/..../bin:$path,其他的類似處理。
6,把你要需要編譯的 c 檔案放在以上生成的編譯環境的bin目錄下,例如:~/androidtoolchain/bin,進入這個目錄裡,輸入命令: $cc -o hello hello.c (這相當於我們平時的 gcc 命令,只是這裡需要引用 arm 裡的庫,而不是x86裡的庫)
hello.c:
#include
#include
int main()
printf("hello,toolchain!/n");
return 0;
即生成了可在手機arm裡執行的可執行檔案hello
7,把這個可執行檔案hello放到手機裡的/data/目錄下,方法有很多,這裡介紹兩種:
一、把這個檔案放在電腦的某個目錄下,然後進入dos的這個目錄下,執行如下命令:adb push hello /data/
二、放在sdcard目錄下,然後執行cp /sdcard/hello /data/也可以
8,進入/data/目錄下,執行這個hello檔案,例如「./hello」,即可以在adb shell裡看到列印結果: hello,toolchain!
Android NDK編譯過程
最近在利用sse指令集完成beautyshot的x86架構的移植,工程在vs下優化完成後,需要對其在android ndk中進行編譯獲得庫檔案後,才能在終端裝置上執行,因為自己以前沒有從來沒有接觸過android相關的內容,所以感覺上手起來比較艱難,所幸有同事幫助,終於能夠利用android ndk...
編譯 交叉編譯
交叉編譯含義 是指在乙個平台上生成另乙個平台上的可執行 同乙個體系結構可以執行不同的作業系統,同樣乙個作業系統也可以在不同的體系結構上執行 例 常說的x86 linux平台 指inter x86體系結構及linux for x86作業系統 x86 winnt平台 指inter x86體系結構及win...
交叉編譯(2) 交叉編譯鏈
什麼是交叉編譯鏈 明白了什麼是交叉編譯,那我們來看看什麼是交叉編譯鏈。首先編譯過程是按照不同的子功能,依照先後順序組成的乙個複雜的流程,如下圖 那麼編譯過程包括了預處理 編譯 彙編 鏈結等功能。既然有不同的子功能,那每個子功能都是乙個單獨的工具來實現,它們合在一起形成了乙個完整的工具集。同時編譯過程...