Buildroot是一個整合工具,主要在快速的下載並建制軟體元件,並且達到快速重製(reproduction)。但是如果是在開發某個軟體,你有你自己的版本管控系統,而且版本一直更新,這樣子的狀況之下,因為buildroot並不會去幫你更新在『buildroot/output/build』底下的source code,所以你想要在你的repo上更新完以後,在用buildroot就不太可能,而且『buildroot/output/build』這個資料夾只是個暫存資料夾,所以你如果去修改這個資料夾裡面的程式碼,其實只要一個『make clean』就不見了。

如果想要在buildroot建立出來的系統裡面去開發軟體的話,可以用三種方式:

  • 使用cross-compiler在buildroot外去編譯你的軟體。
  • 使用local SITE_METHOD
  • 使用<pkg>_OVERRIDE_SRCDIR

cross-compiler

這部分會在之後的『Tool Chains』章節介紹。

local SITE_METHOD

在『.mk』檔裡面宣告如下:

<pkg>_SITE = $(TOPDIR)/../custom-app
<pkg>_SITE_METHOD = local

這種結構可以讓buildroot直接使用本地端的程式碼(只能本地端),這樣buildroot就有辦法去建制最新的版本了。在第一次建制時,會從你剛剛宣告的『<pkg>_SITE』將souce code 用rsync的同步方式給複製到你的建制資料夾,並且在那邊建制。

如果你修改了source code以後,想要在重新建制,就在用底下的三個命令:

  • make <pkg>-reconfigure
  • make <pkg>-rebuild
  • make <pkg>-reinstall

這樣子將修改過的檔案同步複製過去『build』資料夾後,buildroot就會在根據被修改過的套件重新建制了。

推薦的結構應該如以下(意思是底下的四個資料夾都同一個level):

  • buildroot/, buildroot的source code
  • external/, 你的BR2_EXTERNAL tree
  • custom-app/, 客制化的套件source code
  • custom-lib/, 客製化的library

<pkg>_OVERRIDE_SRCDIR

『local SITE_METHOD』的方式雖然可以達到根據最新的source code去建制你的專案,但是沒有版本管控感覺就是不夠有彈性,而且不是很安心,所以這邊在提供另一種方式-『OVERRIDE_SRCDIR』。

這是一個可以直接從你的本地端的版本管控系統裡面去下載source code的辦法,方式有git, svn, cvs等等,用這種方式的話,buildroot就不會去下載這個套件的source code,只會從local 端去複製。

這部份的宣告在『Config.in』裡如下:

results matching ""

    No results matching ""