2016-10-30 65 views
2

我一直在使用buildroot爲了建立一個工具鏈使用uclibc。現在,buildroot的下載所有的包,提取它們並建立它們所有..如何修改包開發的Buildroot包的來源?

我想改變工具鏈的uClibc的源,然後用新的源重新編譯工具鏈,我只是不明白怎麼回事可以在美麗的方式來完成..

後它完成建設,所有的提取源的發現「<的buildroot-SRC > /輸出/建造」。但改變它們不會給我一個東西,因爲buildroot在構建時只使用這個目錄作爲中間件。

所以我的想法是,可能會更改包中的.mk文件,並使其使用我的修改後的源代替下載並解壓(尚不確定是否可以在那裏完成),但似乎有點醜陋的解決方案..

所以我的問題是這樣的:有沒有更好的方式告訴buildroot使用現有的源來構建一個包?

+0

不確定特定的構建系統,但通常有一種方法可以告訴用戶在構建源文件之前應用補丁程序(當然,您必須提供該補丁程序)。 – Torp

+0

生成一個或多個補丁文件,並將它們存儲在該軟件包目錄中。任何帶有.patch擴展名的文件在提取後都會應用到源文件。或者,一旦源被提取並構建,您可以修改源,然後通過刪除相應的**。stamp _ ***文件(即保留.stamp_downloaded,.stamp_extracted,.stamp_patched和.stamp_configured)來強制重新編譯。當你做一個'make clean'並且你沒有修補程序時,要小心你會失去所有東西 – sawdust

回答

4

請閱讀the Buildroot manual關於<pkg>_OVERRIDE_SRCDIR的功能。它完全符合你的要求。

+0

你buildroot開發者是我的英雄。你爲什麼使用一個單獨的文件而不是像'BR2_PACKAGE_LINUX_OVERRIDE_SRCDIR'這樣的常規選項? –

1

最小*_OVERRIDE_SRCDIR例如

文件解釋,但這裏是一個更快的解析版本。

目錄結構:

  • buildroot/:git的子模塊與buildroot的2017.02

  • linux/:與Linux內核在https://github.com/you/linux

  • buildroot_override指向你的叉git的子模塊:包括:

    LINUX_OVERRIDE_SRCDIR = ../linux 
    

編譯和運行:

cd buildroot 
make qemu_x86_64_defconfig 
echo 'BR2_PACKAGE_OVERRIDE_FILE=../buildroot_override' >> .config 
make 
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user 

這裏是an example project using it