您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“openwrt固件如何編譯”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“openwrt固件如何編譯”這篇文章吧。
第一部分:搭建至此編譯環境
1、安裝Ubuntu(編譯需要Linux環境),到其官網下載,版本根據自己所需選擇即可。可以選擇安裝到虛擬機或者物理機,圖形化安裝而且是中文版,連安裝都搞不定的,可以關閉本頁面了;
2、切記不要改動軟件源,同時按住Ctrl + Alt + T,調出終端;
3、逐條輸入下列命令(及時驗證是否安裝成功):
sudo apt-get install g++ sudo apt-get install libncurses5-dev sudo apt-get install zlib1g-dev sudo apt-get install bison sudo apt-get install flex sudo apt-get install unzip sudo apt-get install autoconf sudo apt-get install gawk sudo apt-get install make sudo apt-get install gettext sudo apt-get install gcc sudo apt-get install binutils sudo apt-get install patch sudo apt-get install bzip2 sudo apt-get install libz-dev sudo apt-get install asciidoc sudo apt-get install subversion sudo apt-get install sphinxsearch sudo apt-get install libtool sudo apt-get install sphinx-common sudo apt-get install libssl-dev sudo apt-get install libssl0.9.8
至此編譯環境搭建完成。
第二部分:下載OpenWrt源碼并編譯
OpenWrt源碼分兩種,一種是最新但不是最穩定的Trunk開發版,一種是最穩定的Backfire版,建議下載官方源碼。下載前先在本地創建文件夾:
mkdir openwrt sudo chmod 777 openwrt cd openwrt
選擇你想要的版本然后執行下載命令,下載結束會顯示版本號:
Trunk版下載命令:
svn co svn://svn.openwrt.org/openwrt/trunk/
Backfire版下載命令:
svn co svn://svn.openwrt.org/openwrt/branches/backfire/
更新擴展,安裝擴展:
注:根據教程一步步走下來都是順利通過,但是走到下面更新擴展的時候,出現了問題。有部分的軟件更新不了,我也找了很多其他教程,其他教程都跟這個教程大同小異。我看了feeds.conf.default這個配置文件,發現更新拓展的SVN鏈接有google的地址,我個人猜測鏈接被屏閉了,導致這一步報錯。
./scripts/feeds update -a ./scripts/feeds install -a
注:如果不是剛下載的源碼,為保持代碼為最新狀態,應定期運行svn update命令更新源碼。
測試編譯環境:
make defconfig make prereq
到這里就可以開始編譯自己的固件了。進入定制界面:
make menuconfig
編譯選項:
根據路由器情況,選擇 Target System 和 Subtarget。如意云一代和極壹S的 Target System 均為 Ralink RT288x/RT3xxx 。對于Subtarget ,前者為 MT7620n based boards ,后者為 MT7620a based boards。其他選項根據個人喜好選擇。一般來說要選中LuCI界面,選中中文語言包等等。
開始編譯:
執行export FORCE_UNSAFE_CONFIGURE=1 && make -j3 V=s 進行編譯。-j后面的數字是電腦物理CPU數量加一。V=s可以顯示出編譯的詳細信息。首次編譯大概需要幾個小時的時間,編譯時一定要聯網。
錯誤排查:
編譯失敗,一般有兩種情況:
1.代碼下載鏈接失效。首次編譯時,編譯程序會實時從網上下載一些軟件包的代碼。如果下載鏈接失效,編譯就會失敗。這時需要根據軟件包的名稱,從網上自行下載,然后放在 openwrt/dl/ 目錄下,執行 export FORCE_UNSAFE_CONFIGURE=1 && make -j3 V=s繼續編譯即可。
2.軟件包自身有問題。這時重新執行 make menuconfig ,取消對應軟件包選中即可。這種情況比較少見,目前已知的有 tor 等。
編譯成功,但沒有生成固件。這種情況一般是因為選中的軟件包過多,導致固件大小超過16MB。重新執行 make menuconfig,去掉一些軟件包,重新執行編譯即可。得到固件。在排除了所有錯誤后,現在終于得到了固件。對于如意云RY-1,固件在 openwrt/bin/ramips 目錄下,形如
openwrt-ramips-mt7620n-rt-n14u-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-wrtnode-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-mlw221-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-wr8305rt-squashfs-sysupgrade.bin
以上是網上的教程,其實教程大多數都是正確,就是更新擴展這一步過不去,后來我在openwrt的官網發現他們提供github下載源碼,我把SVN下載源碼換成的git下載:
安裝git軟件包:
sudo apt-get update sudo apt-get install git-core build-essential
獲取openwrt源碼:
git clone git://git.openwrt.org/openwrt.git
再執行更新擴展,安裝擴展:
注:在github下載源碼的feeds.conf.default里面的更新擴展鏈接已經沒有指向google,基本都是指向github,所以更新擴展這一步也能順利執行了
./scripts/feeds update -a ./scripts/feeds install -a
以上是“openwrt固件如何編譯”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。