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