Android Studio NDK cmake報(bào)錯(cuò):asm/types.h not found

轉(zhuǎn)載請(qǐng)注明原創(chuàng):http://www.reibang.com/p/27f98165d73d

環(huán)境:Android Studio 3.0 ?+ NDK 15

編譯時(shí)出現(xiàn)了如下錯(cuò)誤,之前也出現(xiàn)過(guò)這個(gè)錯(cuò)誤,但是后來(lái)我把ndk目錄下sysroot/usr/include/arm-linux-androideabi/asm 拷貝到了能訪問(wèn)到的地方拧略,編譯32位庫(kù)時(shí)沒(méi)有問(wèn)題了表蝙,但是編譯64位庫(kù)時(shí)出現(xiàn)了問(wèn)題,一開始沒(méi)管劫映,后來(lái)直接編譯不過(guò)了违孝,無(wú)奈,繼續(xù)來(lái)接這個(gè)問(wèn)題泳赋。

查看這個(gè)問(wèn)題就要查看出現(xiàn)的原因雌桑,從AS的gradle console中可以看到整個(gè)gradle編譯的log,我從log中找到了cmake編譯命令祖今,如下:

/home/cc/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=armv7-none-linux-androideabi --gcc-toolchain=/home/cc/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 --sysroot=/home/cc/Android/Sdk/ndk-bundle/sysroot -Dtest_EXPORTS -I../../../../src/main/cpp/include -isystem /home/cc/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /home/cc/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include -isystem /home/cc/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward -isystem /home/cc/Android/Sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -Wno-error=format-security -Wno-error=pointer-sign -O0 -fno-limit-debug-info -fPIC -MD -MT CMakeFiles/test.dir/src/main/cpp/Coretest.cpp.o -MF CMakeFiles/test.dir/src/main/cpp/Coretest.cpp.o.d -o CMakeFiles/test.dir/src/main/cpp/Coretest.cpp.o -c /home/cc/android-workspace/opengldemo/gspotsensor/src/main/cpp/Coretest.cpp

-Ixxx ?表示工程中手動(dòng)添加的include目錄筹燕。

-isystem 表示cmake添加的編譯時(shí)引用的目錄

這兩種寫法類似于gcc中的-I,只不過(guò)cmake又區(qū)分了一下用戶寫的和系統(tǒng)添加的罷了。


這個(gè)命令可以手動(dòng)運(yùn)行撒踪,但是需要到.externalNativeBuild/cmake/debug/armeabi-v7a 目錄下过咬,否則會(huì)提示CMakeFiles/test.dir/src/main/cpp/Coretest.cpp.o文件找不到。

上面的錯(cuò)誤中提示asm/types.h找不到制妄,就需要在ndk的目錄中搜索asm目錄掸绞,發(fā)現(xiàn)在/home/cc/Android/Sdk/ndk-bundle/sysroot/usr/include/中有好幾個(gè),具體選擇哪一個(gè)耕捞,要根據(jù)使用的架構(gòu)類型決定衔掸,上面命令中用的是arm-linux-androideabi,那我們肯定也要用這個(gè)俺抽,所以就在上面命令中添加了“-isystem /home/cc/Android/Sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi”敞映,結(jié)果就可以運(yùn)行了。

然后我就把這一句添加到了項(xiàng)目的Cmakelists.txt中磷斧,有兩種方式:

這兩種方式都行振愿,第一種是把這個(gè)引用當(dāng)做參數(shù),第二種方式是把這個(gè)目錄當(dāng)做include包含進(jìn)來(lái)弛饭。

#SET(CMAKE_CXX_FLAGS "-isystem /home/cc/Android/Sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi")

#include_directories(/home/cc/Android/Sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi)

到這里問(wèn)題基本解決冕末,但是還有個(gè)路徑問(wèn)題,這里我寫的是絕對(duì)路徑侣颂,這樣這個(gè)工程給到別人就沒(méi)法用了档桃,每次更新完代碼還需要改這個(gè)路徑,所以這里要改成相對(duì)路徑憔晒。

這里也有兩種方式藻肄,

方式1:修改原生cmake腳本

~/Android/Sdk/cmake/3.6.3155560/android.toolchain.cmake,這個(gè)文件中定義了很多可用的宏拒担,在大約428行仅炊,在這里根據(jù)各種編譯架構(gòu),可以設(shè)置include的目錄澎蛛,就是-isystem對(duì)應(yīng)的目錄抚垄,改這里應(yīng)該是可以的,但是我沒(méi)有這么做谋逻,因?yàn)檫@樣我還要跟別的同事改呆馁,這事應(yīng)該Google來(lái)做。如下圖

方式2:仿照上圖毁兆,在項(xiàng)目的Cmakelists.txt中修改:

上半部分浙滤,是根據(jù)編譯框架選擇include目錄,后半部分是我將一些ndk中常用的變量給打印了出來(lái)气堕。

按照這種方式纺腊,編譯OK畔咧。

其實(shí)cmake中遇到的很多錯(cuò)誤都可以使用這一套路來(lái)分析,先找到編譯命令揖膜,再手動(dòng)運(yùn)行這個(gè)命令誓沸,這樣得到的錯(cuò)誤信息更直接,不會(huì)被AS那一堆的問(wèn)題所嚇到壹粟。


順便發(fā)布個(gè)招聘廣告:

常年招聘Android高手拜隧,懂OpenGL者、視頻處理者優(yōu)先趁仙。

地點(diǎn):北京房山

公司處于創(chuàng)業(yè)階段洪添,有很好的項(xiàng)目在做,并且是無(wú)人涉及過(guò)的行業(yè)雀费。



測(cè)0-1, 這個(gè)精度夠了沒(méi)? 三機(jī)對(duì)比Pbox測(cè)標(biāo)致3008 1.6T百公里13秒動(dòng)力夠用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末干奢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盏袄,更是在濱河造成了極大的恐慌忿峻,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件貌矿,死亡現(xiàn)場(chǎng)離奇詭異炭菌,居然都是意外死亡罪佳,警方通過(guò)查閱死者的電腦和手機(jī)逛漫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赘艳,“玉大人酌毡,你說(shuō)我怎么就攤上這事±俟埽” “怎么了枷踏?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)掰曾。 經(jīng)常有香客問(wèn)我旭蠕,道長(zhǎng),這世上最難降的妖魔是什么旷坦? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任掏熬,我火速辦了婚禮,結(jié)果婚禮上秒梅,老公的妹妹穿的比我還像新娘旗芬。我一直安慰自己,他們只是感情好捆蜀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布疮丛。 她就那樣靜靜地躺著幔嫂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪誊薄。 梳的紋絲不亂的頭發(fā)上履恩,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音暇屋,去河邊找鬼似袁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咐刨,可吹牛的內(nèi)容都是我干的昙衅。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼定鸟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼而涉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起联予,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啼县,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后沸久,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體季眷,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年卷胯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了子刮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窑睁,死狀恐怖挺峡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情担钮,我是刑警寧澤橱赠,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站箫津,受9級(jí)特大地震影響狭姨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苏遥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一饼拍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧暖眼,春花似錦惕耕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)欺缘。三九已至,卻和暖如春挤安,著一層夾襖步出監(jiān)牢的瞬間谚殊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工蛤铜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嫩絮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓围肥,卻偏偏與公主長(zhǎng)得像剿干,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子穆刻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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