本文匯總自己在編譯openbmc時遇到的一些問題及解決思路,希望對有興趣研究openbmc的同學有一些幫助。
項目地址:https://github.com/openbmc/openbmc
編譯步驟:https://github.com/openbmc/openbmc
我編譯主機的配置:
虛擬機 | Ubuntu16.04 |
---|---|
gcc&g++ | 6.5.0 |
內存大小 | 4GB |
線程數 | 8 |
硬盤空間 | 256GB |
編譯成功的標志:全部任務成功結束或者在/tmp/deploy/images/romulus
下找到編譯的相應鏡像。
Q & A
- 出現某個包do_unpack失敗
這個可能時源的地址被牆了,需要FQ。 - 出現某個包do_compile失敗
可能有兩個原因,第一檢查gccc編譯器及g++編譯器,第二可能內存不夠,解決方法建立內存交換區,可以參考這篇文章,或者在build_dir/conf/local.conf修改/增加這兩個變量BB_NUMBER_THREADS = "2"
,PARALLEL_MAKE = "-j 4"
,這兩個變量分別代表bitbake執行使用的線程數及編譯時使用的線程數,可以通過減少線程數降低內存開銷。 - 強制關閉bitbake進程后,再次執行發現有的包死活執行失敗,提示the basehash value changed from xxx to xxx
有一個簡單的辦法,找到錯誤信息中bb文件的位置,vim打開他,在任意一行添加空行保存,騙編譯器重新編譯該菜譜。 - bitbake卡死不動,沒有任何輸出信息
ps看一下是不是運行了多個bitbake服務器,關閉它們重新運行。還有一種可能是bitbake不能連接到網絡,需要檢查網絡。 - 其他錯誤
如果實在是找不到辦法,在你確定自己的環境滿足要求后,刪除目錄sstate-cache
,cache
,tmp
目錄下的所有文件,重新編譯。
如果你並沒有找到合適的問題解決方法或者有其他問題解決方法,歡迎在留言區給出。之后我如果遇到其他的問題,我也會繼續更新這篇文章。