交叉編譯

1.為啥需要交叉編譯楷掉?
因?yàn)閘inux 系統(tǒng)上的gcc 在android 系統(tǒng)上沒法正常調(diào)用驼卖,所有需要使用android ndk 中的 gcc

2
2.1 android ndk 使用ndk 17,
2.2 在Linux系統(tǒng)中:

wget https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip?hl=zh_cn
mv   xxxx.zip?hl==zh_cn      xxx.zip    
# 使用mv 將上面的文件修改為  .zip 文件可免,然后 進(jìn)行解壓
 unzip xxxx.zip 


在linux 系統(tǒng)中 編寫一個(gè)簡單輸出 hello world
[root@sue download]# cat hello.c
#include <stdio.h>
int main(){
printf("Hello  world\n");
}
[root@sue download]# 
[root@sue download]# gcc hello.c -o  mainEXE
[root@sue download]# ./mainEXE
Hello  world
[root@sue download]# 

雖然上面的 mainEXE 在liux系統(tǒng)上可以運(yùn)行耕漱,但是沒法在 android 系統(tǒng)上運(yùn)行

因?yàn)槲业氖謾C(jī)系統(tǒng)是arm64位的系統(tǒng),所以選擇aarch64-linux-android-4.9
查看手機(jī)平臺的架構(gòu)的方式
adb shell
1|HWBMH:/proc $ cat cpuinfo
Processor       : AArch64 Processor rev 0 (aarch64)
processor       : 0
BogoMIPS        : 3.84
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer : 0x41
CPU architecture: 8



[root@sue bin]# pwd
/opt/download/android-ndk-r17c/toolchains/aarch64-linux-android4.9/prebuilt/linux-x86_64/bin
使用上面的目錄下的
aarch64-linux-android-gcc  
[root@sue bin]# 


export NDK_GCC="/opt/download/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc "
$NDK_GCC hello.c -o mainNDKEXE



[root@sue download]# export NDK_GCC="/opt/download/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc"
[root@sue download]# $NDK_GCC hello.c -o mainNDKEXE
hello.c:1:19: fatal error: stdio.h: No such file or directory
#include <stdio.h>
                 ^
compilation terminated.
[root@sue download]# 
尋找不到頭文件和庫文件
那就在platforms 中找
/opt/download/android-ndk-r17c/platforms

# --sysroot=路徑尽爆,  (自動(dòng)尋找頭文件和庫文件怎顾,.h/ .a/.so)
exprot AAA="--sysroot=/opt/download/android-ndk-r17c/platforms/android-21/arch-arm64";

但是上面是頭文件有了,庫文件還沒有漱贱,于是還需要找?guī)煳募?
/opt/download/android-ndk-r17c/sysroot/usr/include/


exprot AAA="--sysroot=/opt/download/android-ndk-r17c/platforms/android-21/arch-arm64 -isystem /opt/download/android-ndk-r17c/sysroot/usr/include";

[root@sue download]# echo $NDK_GCC
/opt/download/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc
[root@sue download]# echo $AAA
--sysroot=/opt/download/android-ndk-r17c/platforms/android-21/arch-arm64 -isystem /opt/download/android-ndk-r17c/sysroot/usr/include
[root@sue download]# 
[root@sue download]# $NDK_GCC $AAA hello.c -o mainNDKEXE
In file included from /opt/download/android-ndk-r17c/sysroot/usr/include/sys/types.h:36:0,
                 from /opt/download/android-ndk-r17c/sysroot/usr/include/stdio.h:42,
                 from hello.c:1:
/opt/download/android-ndk-r17c/sysroot/usr/include/linux/types.h:21:23: fatal error: asm/types.h: No such file or directory
 #include <asm/types.h>
                       ^
compilation terminated.

看來還需要配置 asm/types.h

/opt/download/android-ndk-r17c/sysroot/usr/include/aarch64-linux-android

于是乎:
export AAA="--sysroot=/opt/download/android-ndk-r17c/platforms/android-21/arch-arm64 -isystem /opt/download/android-ndk-r17c/sysroot/usr/include -isystem /opt/download/android-ndk-r17c/sysroot/usr/include/aarch64-linux-android ";



[root@sue download]# echo $NDK_GCC 

[root@sue download]# export NDK_GCC="/opt/download/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc"
[root@sue download]# $NDK_GCC  $AAA   hello.c -o mainNDKEXE
[root@sue download]# 
[root@sue download]# ls -la


上面還有問題槐雾,
需要增加-pie
[root@sue download]# $NDK_GCC  -pie $AAA   hello.c -o mainNDKEXE
完畢。
分析一下:
export NDK_GCC="/opt/download/android-ndk-r17c/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc" //需要gcc 

export AAA="--sysroot=/opt/download/android-ndk-r17c/platforms/android-21/arch-arm64 【尋找文件頭文件】
-isystem /opt/download/android-ndk-r17c/sysroot/usr/include【尋找文件頭文件】
-isystem /opt/download/android-ndk-r17c/sysroot/usr/include/aarch64-linux-android ";【運(yùn)行期 尋找asm】

# --sysroot=路徑幅狮,  (自動(dòng)尋找頭文件和庫文件募强,.h/ .a/.so)
# -isystem 路徑, 自動(dòng)尋找頭文件彪笼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钻注,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子配猫,更是在濱河造成了極大的恐慌幅恋,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泵肄,死亡現(xiàn)場離奇詭異捆交,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)腐巢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門品追,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冯丙,你說我怎么就攤上這事肉瓦。” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵泞莉,是天一觀的道長哪雕。 經(jīng)常有香客問我,道長鲫趁,這世上最難降的妖魔是什么斯嚎? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮挨厚,結(jié)果婚禮上堡僻,老公的妹妹穿的比我還像新娘。我一直安慰自己疫剃,他們只是感情好钉疫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著慌申,像睡著了一般陌选。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹄溉,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天咨油,我揣著相機(jī)與錄音,去河邊找鬼柒爵。 笑死役电,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棉胀。 我是一名探鬼主播法瑟,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唁奢!你這毒婦竟也來了霎挟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤麻掸,失蹤者是張志新(化名)和其女友劉穎酥夭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脊奋,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熬北,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诚隙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讶隐。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖久又,靈堂內(nèi)的尸體忽然破棺而出巫延,到底是詐尸還是另有隱情效五,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布烈评,位于F島的核電站火俄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏讲冠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一适瓦、第九天 我趴在偏房一處隱蔽的房頂上張望竿开。 院中可真熱鬧,春花似錦玻熙、人聲如沸否彩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽列荔。三九已至,卻和暖如春枚尼,著一層夾襖步出監(jiān)牢的瞬間贴浙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工署恍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留崎溃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓盯质,卻偏偏與公主長得像袁串,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子呼巷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容