我對openwrt buildroot中的build_dir
和staging_dir
感到困惑。 他們用於什麼?openwrt buildroot build_dir和staging_dir
openwrt中有feeds
。我會想象建立一個形象。你將在menuconfig
中選擇你想要的包,並使用make
來構建它。
包從feeds
取得,然後編譯成build_dir
?
那麼什麼是staging_dir
用於?
我對openwrt buildroot中的build_dir
和staging_dir
感到困惑。 他們用於什麼?openwrt buildroot build_dir和staging_dir
openwrt中有feeds
。我會想象建立一個形象。你將在menuconfig
中選擇你想要的包,並使用make
來構建它。
包從feeds
取得,然後編譯成build_dir
?
那麼什麼是staging_dir
用於?
目錄build_dir
用來打開所有源檔案和編譯他們進來
目錄staging_dir
是用來「裝」的所有編譯的程序之中,願意或者用於建設進一步包,或用於準備固件圖像。
有build_dir
在三個方面:
build_dir/host
,編譯所有主機計算機上運行的工具(的OpenWRT建立的sed
和它自己的版本很多其他工具從源代碼)。該區域將用於編譯僅在您的主機上運行的程序。build_dir/toolchain...
用於編譯將用於構建包的跨C編譯器和C標準庫組件。此區域將用於編譯僅在您的主機上運行的程序(例如Cross C編譯器),以及用於在目標上運行的鏈接到的庫(例如, uClibc的,libm中,並行線程等build_dir/target...
用於編譯實際的軟件包,而Linux內核,目標系統在升級,也有三個方面:
staging_dir/host
是一個帶有自己的bin/
,lib/
等等的主機工具安裝到的迷你Linux根目錄;編譯系統的其餘部分將PATH前綴加上該目錄中的目錄staging_dir/toolchain...
是一個迷你Linux根目錄,其自身的bin/
,lib/
等包含用於構建其餘固件的交叉C編譯器。實際上,您可以使用它編譯OpenWRT之外的簡單C程序,該程序可以加載到固件上。 C編譯器可能類似於:staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-gcc
。您可以看到CPU的版本,C庫和編碼到其中的gcc;這允許同時在同一區域內構建多個目標。staging_dir/target.../root-...
包含每個目標包的「安裝」的版本再次安排與bin/
,lib/
,這將成爲實際的根目錄下,與一些調整會得到壓縮了進入固件映像,像root-ar71xx
。 staging_dir/target...
還有一些其他文件主要用於生成軟件包和開發包等。對不起,它有點冗長,這很難形容得更簡潔。
你是對的錢!非常感謝! – dudeking 2014-12-03 21:20:56
爲每種類型的路徑提及相應的Makefile變量也是非常有用的。謝謝 – 2017-11-08 12:48:09
非常好的問題和答案。+1 – Haswell 2015-11-05 11:04:28