openwrt 目錄下的 trunk 結構如下:
有幾個重要目錄:package, target, build_dir, staging_dir, bin, dl, ...
---include 目錄是存放 *.mk 檔案。這裡的檔案上是在makefile裡被include的
---build_dir/host 目錄是建立工具鍊時的臨時目錄
---build_dir/toolchain-<arch>* 對應硬體的工具鍊的目錄
---staging_dir/toolchain-<arch>* 是工具鍊的安裝位置
---target/linux/<platform> 目錄裡面是各個平台(arch)的相關代碼
---target/linux/<platform>/config-3.10 檔案就是配置檔案了
---dl 目錄是'download'的縮寫, 在 編譯前期,需要從網絡下載下傳的資料包都會放在這個目錄下,這些軟體包的一個特點就是,會自動安裝在所編譯的固件中,也就是我們make menuconfig的時候,為固件配置的一些軟體包。如果我們需要更改這些源碼包,隻需要将更改好的源碼包打包成相同的名字放在這個目錄下,然後開始編 譯即可。編譯時,會将軟體包解壓到build_dir目錄下。
---build_dir/ 目錄下進行解壓,編譯和打更新檔等。
---package/ 目錄裡面包含了我們在配置檔案裡設定的所有編譯好的軟體包。預設情況下,會有預設選擇的軟體包。
在openwrt中ipk就是一切, 我們可以使用:
---feeds/packages 為執行./scripts/feeds install 之後的package。
---bin 目錄下生成了很多bin檔案,根據不同的平台來區分。
---bin/<platform>/package 目錄裡面有很多ipk字尾的檔案,都是package目錄下的源碼在build_dir目錄下編譯後的生成的結果。
比如:lua包,mips架構。
make步驟:
在 make 時,make 讀取到 package/utils/lua/makefile 檔案内容。
如果git或svn源,那麼就會在 tmp/dl/ 目錄下将源代碼 clone 下來。然後,将 clone 下來的源碼删除 .git 或 .svn 目錄删除,然後壓縮成 lua-1.5.1.tar.gz 檔案,并複制到 dl/ 目錄下。
在編譯前段,将 dl/ 目錄下的 lua-1.5.1.tar.gz 檔案解壓到 build_dir/target-mips_<board>/ 目錄下。
進入 build_dir/target-mips_<board>/lua-1.5.1/
./configure,make,make install。
make install 會将生成的二進制檔案安裝到 build_dir/target-mips_<board>/lua-1.5.1/ipkg-ar71xx/ 目錄下。
最後将 build_dir/target-mips_<board>/lua-1.5.1/ipkg-ar71xx/ 打成包成lua-5.1.5-1_ar71xx.ipk,并複制到 bin/ar71xx/packages/base/ 。