2014-09-25 251 views
13

我對openwrt buildroot中的build_dirstaging_dir感到困惑。 他們用於什麼?openwrt buildroot build_dir和staging_dir

openwrt中有feeds。我會想象建立一個形象。你將在menuconfig中選擇你想要的包,並使用make來構建它。

包從feeds取得,然後編譯成build_dir

那麼什麼是staging_dir用於?

+0

非常好的問題和答案。+1 – Haswell 2015-11-05 11:04:28

回答

27

目錄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-ar71xxstaging_dir/target...還有一些其他文件主要用於生成軟件包和開發包等。

對不起,它有點冗長,這很難形容得更簡潔。

+0

你是對的錢!非常感謝! – dudeking 2014-12-03 21:20:56

+0

爲每種類型的路徑提及相應的Makefile變量也是非常有用的。謝謝 – 2017-11-08 12:48:09