做者:辛勤的擺渡人
來源:CSDN
原文:https://blog.csdn.net/hunter168_wang/article/details/50780597linux
bin目錄存放的是一些輸出文件,主要是存放OpenWrt編譯好的開發環境,好比toolchain, SDK,Image製做工具,還存放一些package安裝包(ipk包),
OpenWrt-ImageBuilder-bcm53xx.Linux-x86_64.tar.bz2
OpenWrt-SDK-bcm53xx_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2
OpenWrt-Toolchain-bcm53xx_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2git
目錄bin/bcm53xx/packages/主要包含下面四個子目錄
base:shell
存放的是一些基礎的軟件安裝包;
leadlcore:
存放的是聯芯自定義的一些軟件安裝包;服務器
luci:
存放的是一些UI相關的軟件安裝包網絡
packages:
存放的是一些通用的軟件安裝包tcp
build_dir存放的是一些軟件源碼目錄,解壓縮後的程序源碼均放在該目錄,build_dir存在三個目錄分別以下:工具
host子目錄:flex
host子目錄下存放的是開機系統須要的一些工具或程序,好比automake, autoconf, flex, sison, gettext,libtool等ui
target-arm_cortex-a9_uClibc-0.9.33.2_eabi子目錄:url
該目錄下存放的是用過feeds install安裝或者用戶自定義的一些程序好比samba, vsftpd,hostapd,dbus, iperf等等
toolchain-arm_cortex-a9_gcc-4.8-linaro_uClibc-0.9.33.2_eabi子目錄:
該目錄存放的是編譯toolchain所需的一些源碼包,好比linux內核目錄, binutils源碼包,gcc源碼包;
該目錄存放的是一些配置文件
Config-build.in
Config-devel.in
Config-images.in
Config-kernel.in
軟件源碼包download目錄,經過網絡下載軟件包(.tar.bz2, .tar.gz)均存放在此目錄,通常編譯某個軟件時會今後目錄找對應的軟件源碼包,而後解壓到指定的源碼目錄中;
若是此目錄沒有對應軟件的源碼包,則根據此軟件Makefile文件中指定的網絡地址去下載,下載好的軟件包會自動存放在該目錄;
文檔目錄,目前此目錄下存放的也是代碼,須要使用latex編譯輸出PDF後才能夠閱讀;
相關資源存放目錄;
該目錄存放的是編譯時所須要的一些通用的Makefile腳本;
編譯時會include到該目錄中的makefile腳本
顧名思義該目錄與軟件包有關係,package目錄存放的軟件包或者程序的配置文件,全部程序或者軟件均會被分門別類的存放在package目錄下,子目錄列表以下
base-files boot devel feeds firmware kernel libs Makefile network system utils
再以網絡相關的程序爲例進行說明,network子目錄下又包含以下目錄
config
配置相關的程序或者軟件,好比firewall
ipv6
ipv6協議相關的資料
services
網絡服務相關的軟件或者程序,好比hostapd, samba, odhcpd等等
utils
存放的是網絡調試相關的一些工具,好比iperf, iw, tcpdump,等等
對於某一個指定的軟件包目錄,內部主要包含兩個文件,
一個是Makefile,內部包含着軟件的名字和版本,以及下載該軟件包服務器網絡地址;
另外一個是patch目錄,下載好對應版本的軟件包後,打上對應的patch;
最後一個是files目錄,
該目錄存放的是此程序的默認配置文件;
說明:Makefile是必須具有的文件,而patch和file目錄並不是必選項,根據軟件狀況無關緊要
該目錄存放的是一些程序的腳本,
用戶能夠經過./script/feeds search/install 進行搜索或者安裝相關軟件;
stage_dir目錄存放的子目錄以下:
host
目前字母存放的輸出文件爲X86格式的,暫不清楚具體做用;
target-arm_cortex-a9_uClibc-0.9.33.2_eabi
該子目錄主要存放的是編譯出來的根文件系統,即rootfs
toolchain-arm_cortex-a9_gcc-4.8-linaro_uClibc-0.9.33.2_eabi
該子目錄存放的是編譯好的toolchain目錄樹,
OpenWrt編譯toolchain時依賴的Makefile以及配置文件存放目錄;
tools目錄相似於packages目錄,只不過該目錄存放的是系統必須的一些程序或者軟件的配置文件目錄;
在openwrt的根目錄下有feeds.conf
或者feeds.conf.default
文件,裏面的內容相似以下
src-git base https://git.openwrt.org/openwrt/openwrt.git^412d80c src-git packages https://git.openwrt.org/feed/packages.git^76ebe2b src-git luci https://git.openwrt.org/project/luci.git^84692e5 src-git routing https://git.openwrt.org/feed/routing.git^e5fe4b6 src-git telephony https://git.openwrt.org/feed/telephony.git^16bad9e
以第一行爲例,src-git base https://git.openwrt.org/openwrt/openwrt.git^412d80c
,它包含3個部分,src-git
,base
,url
,它的意思是base
模塊的代碼要經過git
從url
處下載。
./scripts/feeds update packages luci //對應feeds.conf文件的第二列的模塊 ./scripts/feeds update -a //下載全部模塊
這時會把文件檢出到feeds目錄下,下一步就是安裝:
./scripts/feeds install feeds/base/package/devel/gdb //這裏我要安裝gdb
執行完這裏,腳本會把gdb編譯時全部依賴在package/feeds/base
創建一個同名符號連接,連接到feeds對應的目錄下
使用make menuconfig
配置你要編譯的模塊是何種安裝方式。
make package/feeds/base/gdb/{clean,prepare,compile,install} V=99
在clean,prepare,compile,install
各個階段會作不一樣的動做,好比prepare可能就會拉源碼包下來,到dl
目錄,install就會將ipk安裝到bin
對應的目錄下。