Openwrt directory structure
了解Openwrt的目錄結(jié)構(gòu)是學習一個新系統(tǒng)最基礎(chǔ)也是最重要的部分。試想如果你想加一行代碼進行修復bug,卻花了半個小時才找到相應(yīng)的位置输瓜,那是多么悲催啊,所以懂得系統(tǒng)框架可以讓你在開發(fā)過程不會跑偏林束、快速定位判导,讓工程項目規(guī)范化等咨察。
如圖是openwrt的基本的目錄結(jié)構(gòu)论熙,其中白色部分是直接下載源碼就有的源目錄,藍色部分則是通過make之后產(chǎn)生的目錄(其中feeds目錄則是通過命令./scripts/feeds update -a;./scripts/feeds install -a之后安裝的擴展包目錄摄狱,這個目錄將所有的文件鏈接到package/feeds/中去了)脓诡,下面就對各目錄進行簡要說明。
1.tool和toolchain目錄
編譯固件image/獲取內(nèi)核頭文件/二進制編譯器和調(diào)試器/c庫文件媒役,需要用到的通用工具祝谚。
2.include目錄
編譯時的頭文件索引,源碼包就有酣衷,包含一些編譯用的通用腳本和include宏定義交惯。比較重要的包括:package.mk文件(幾乎每個package目錄中的模塊的makefile中都提到它)
3.scripts目錄
對openwrt的包進行管理的perl腳本,源碼包就有穿仪,存放各類腳本的目錄席爽。比如:feeds腳本,使用.scripts/feeds update -a或者.scripts/feeds install -a啊片,就可以對feeds.conf.default中列舉的文件進行處理了只锻。
4.target目錄
包含了特定平臺的文件,固件鏡像和內(nèi)核構(gòu)建過程的索引紫谷,以及生成編譯器各編譯工具齐饮。
- linux目錄下為各個平臺相應(yīng)的內(nèi)核patches,配置文件等笤昨;
- imagebuilder目錄則掃描如何生成這個平臺的固件祖驱,源碼包就有的,用來指導如何編譯firmware和內(nèi)核以及sdk的瞒窒。
5.package目錄和feeds目錄
在openwrt中羹膳,基礎(chǔ)的軟件包目錄為package,擴展的軟件包在feeds中根竿。
feeds中的軟件擴展了openwrt的基本功能陵像,它將所有的軟件鏈接到package/feeds中。里面存放的就是按照 feeds.conf.default文件中列舉的要處理的文件寇壳,所展開得到的目錄醒颖。目錄中存放的東西,和package目錄中大致相似壳炎。指導如何下載和編譯對應(yīng)模塊的泞歉。
這些軟件大多數(shù)都是編譯成.ipk格式的逼侦,這里面有內(nèi)核模塊文件,有各種軟件的源碼腰耙,以及patch文件和Makefile用來下載源碼的榛丢。
6.dl目錄
編譯工具、目標挺庞、package所需要的軟件包將從網(wǎng)上下載放到dl目錄中
7.build_dir目錄
一個臨時目錄晰赞,用來將所有需要編譯的軟件源碼放到這個目錄中進行編譯。它包括一下三個目錄:
- build_dir/host: 與編譯目標無關(guān)的工具的臨時文件夾
- build_dir/<arch>*: 作為所有目標选侨,package編譯的臨時目錄
- build_dir/toolchain-<arch>*:編譯特定體系的交叉編譯鏈的文件夾
8.staging_dir目錄
用于存放構(gòu)建目標系統(tǒng)鏡像的工具軟件掖鱼,包括:
- staging_dir/host: 宿主系統(tǒng)使用的工具
- staging_dir/<arch>*: 目標系統(tǒng)使用的軟件軟件包
- staging_dir/<toolchain-<arch>*: 交叉編譯工具鏈
9.bin目錄
make之后的新增目錄,用來存放make的結(jié)果援制。比如我是用來編譯ramips的戏挡,則此目錄中會有:ramips子目錄,其中又包含:packages子目錄(里面含有各種.ipk文件晨仑,以及一個Packages文件用來介紹此目錄中的每個ipk文件)和可以燒入CPE的openwrt-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin文件褐墅。
10.其他文件
- Makefile文件:make命令的總?cè)肟?/li>
- rules.mk文件:定義了一系列在make時使用的規(guī)則
- .config隱藏文件:make menuconfig后的config結(jié)果的存放文件。
- .config.old隱藏文件:老的.config文件
Openwrt directory structure的分析就到這邊洪己,有感悟時會持續(xù)會更新掌栅。
注:以上內(nèi)容都是本人在學習過程積累的一些心得,難免會有參考到其他文章的一些知識码泛,如有侵權(quán)猾封,請及時通知我,我將及時刪除或標注內(nèi)容出處噪珊,如有錯誤之處也請指出晌缘,進行探討學習。文章只是起一個引導作用痢站,詳細的數(shù)據(jù)解析內(nèi)容還請查看Openwrt相關(guān)教程磷箕,感謝您的查閱。