Openharmony南向編譯出錯自查手冊
??想了解更多關(guān)于開源的內(nèi)容,請訪問:??
在長期的openharmony教學(xué)過程中,發(fā)現(xiàn)經(jīng)常會有學(xué)員被一些低級的,重復(fù)出現(xiàn)的錯誤所困擾,有些是因為粗心,有些是對原理和機制理解不到位,而一遍一遍的講解此種錯誤,不僅耗費巨量的時間,而且長此以往會消磨執(zhí)教人員的耐性,變得易怒,本篇就用來記錄個種常見的錯誤,以供學(xué)員和各位初學(xué)者用來自查之用。
以下每種錯誤都非常典型,每個錯誤都配有截圖和文字說明,一般對照來看可解決90%以上的新手入門問題,并會在后續(xù)的教學(xué)活動中持續(xù)改進,建議收藏。
1、之前是好的.有一次輸入hb set提示找不到hb工具
原因分析:沒有在源碼目錄內(nèi)執(zhí)行,簡單判斷是否源碼目錄就看目錄里面有沒有一個ohos_config.json文件:
解決辦法:cd到源碼所在目錄內(nèi)再執(zhí)行hb set。
知識點:執(zhí)行l(wèi)inux指令的時候需要注意當(dāng)前工作目錄。
2、提示Unable to load xxx
原因分析:在BUILD.gn內(nèi)沒有對應(yīng)的目錄,導(dǎo)致到不到該路徑下的BUILD.gn文件。
解決辦法:修改BUILD.gn內(nèi)的目錄名稱或檢查對應(yīng)的名稱有沒有寫錯,如大小寫,空格等問題,特別是有些學(xué)員會粗心大意,目錄名稱前有空格或者大寫的L與I沒有區(qū)分。
此時重命名就會發(fā)現(xiàn):
知識點:BUILD.gn內(nèi)deps的寫法,冒號前是文件夾名稱。
3、提示unresolved xxx dependencies … need by xxx
原因分析:在BUILD.gn同級的文件夾內(nèi)的BUILD.gn聲明的static_library名稱與deps里面的不一致。
解決辦法:修改deps內(nèi)的冒號后面的庫名稱或者將文件夾內(nèi)BUILD.gn聲明的static_library改成與deps內(nèi)一致。
知識點:deps內(nèi)冒號后面的內(nèi)容是對應(yīng)文件夾內(nèi)的庫名稱。
補充知識:對于deps內(nèi)的內(nèi)容是出錯的高危區(qū),出現(xiàn)這種錯誤一般是對deps機制不理解導(dǎo)致,現(xiàn)用一圖來說明deps到底改怎么寫:
4、提示 ERROR at xxx/BUILD.gn:25:12: Assignment had no effect.
[OHOS INFO] source = [
原因分析:source單詞拼寫錯誤,正確寫法是sources,同樣的其他類似問題如:
也是單詞拼寫錯誤。
解決辦法:將對應(yīng)報錯的單詞改成正確的名稱。
知識點:正確的名稱為sources和include_dirs,如下圖:
推薦安裝gn插件,有顏色提示,還可以方便進行快捷鍵注釋,括號補全等操作。
在安裝之前:
安裝之后:
如果某一變量不是內(nèi)置變量,則不能正確高亮:
5、提示ninja error: … needed by xxx.o, missing and unkonow rule to make it
原因分析:在static_library內(nèi)的sources列表中將.c文件名寫錯了導(dǎo)致編譯時候找不到對應(yīng)的源文件。
解決辦法:修改sources內(nèi)的c文件名或者修改文件系統(tǒng)內(nèi)的文件名使之與sources里的文件一致。
知識點:c語言編譯時依靠文件名尋找文件,對應(yīng)的文件不存在則報錯。
6、提示某個符號未定義:undefined reference to xxx
原因分析:函數(shù)/變量名寫錯或調(diào)用一個根本不存在的函數(shù)/變量。
解決方式:將函數(shù)/變量名修改正確即可。
知識點:c語言編譯的相關(guān)知識。
7、提示too few arguments to function xxx
原因分析:c語言函數(shù)參數(shù)個數(shù)傳錯。
解決方式:正確傳入?yún)?shù)。
知識點:c語言基礎(chǔ)知識。
8、提示 Expected comma between items.
原因分析:在gn中列表的兩行數(shù)據(jù)沒有用逗號隔開,如下:
解決方式:輸入一個英文的逗號即可,建議:每一個列表項后面跟上一個逗號。
知識點:gn的基礎(chǔ)知識。
9、提示Replacing nonempty list.
原因分析:嘗試覆蓋一個非空的列表,如下例:
解決方式:在下一個變量處使用+=即可解決,+=代表在后面追加。
知識點:gn的基礎(chǔ)知識。
10、提示:fatal error: xxxx.h: No such file or directory
原因分析:在某個c文件里引用了某個頭文件,但是沒有在??include_dirs?
?里包含這個頭文件的路徑。
解決方式:在include_dirs內(nèi)添加這個頭文件即可,寫在內(nèi)部或使用+=在后面追加都行。
知識點:c語言編譯相關(guān)知識點。