編譯 uClinux-dist
完成 kernel 與 filesystem 設定後,在命令模式執行編譯命令:
# make dep
# make
進行 kernel 與應用程式的跨平臺編譯。在編譯之前,請檢查跨平臺編譯工具組(如GNU armtools)是否已安裝,同時在環境變數 PATH 的搜尋路徑裡也要能找到相關的程式。
uClinux-dist 會幫我們製作 root filesystem 的映像檔(image file),最後編譯完成的 kernel 與 root filesystem 映像檔會存放於 image/ 目錄下。編譯成功後會得到 4 個主要的檔案如下:
˙ images/linux.text:kernel的.text節區。
˙ images/linux.data:kernel的.data節區。
˙ images/romfs.img:filesystem的映像檔。
˙ images/image.bin:以上 3 個檔案合併後的映像檔。
在這裡我將 uClinux-dist 設定成「GDB/ARMulator」,這樣我們之後就可以用 GDB/ARMulator 來玩這個 root filesystem 了。
常見問題
在許多無法成功編譯 uClinux-dist 的案例中,最常見到的問題有2個。
第一種情況為 GNU armtools 安裝不完整,導致在編譯的過程中出現錯誤,例如在 uClinux-dist 中選用 uClibc,但並未安裝 uClibc 套件,或是系統設定的問題,導致編譯器無法找到正確的程式庫位置。因此若在編譯 uClinux-dist 的過程出現錯誤,請先檢查 GNU armtools 的安裝是否完整,同時也記得安裝所選用的 C 程式庫。
第二種情況為套件的設定與 C 函式庫有衝突,例如有些套件不能使用 uClibc,必須改用 uC-libc 才能成功編譯。
Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue
您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw