1. 程式人生 > >OpenWrt編譯

OpenWrt編譯

首先,你需要一臺電腦,安裝一個ubuntu,這個電腦可以用虛擬機器,也可以用普通的電腦另外最好學一下llinux基礎,最好英文基礎也有。。。。。比如。。。我上次見到一個人用了sudo rm -rf /    表示嚇尿了{:soso_e136:}

還有請自備梯子,沒梯子是編譯不出來的(很多庫都是google的)

從官網下載ubuntu,我下的是ubuntukylin 14.04 64位桌面版,虛擬機器的話推薦下32位版本
下載地址在此
32位:http://cdimage.ubuntu.com/ubuntu ... 1-desktop-i386.iso?
64位:http://cdimage.ubuntu.com/ubuntu ... -desktop-amd64.iso?




曲調日常使用的話是用本地區域網的一臺臺式機當伺服器使的
配置是這樣子
CPU:AMD FX8150 (請不要噴AMD,單核效能確實是一坨屎,但是對於編譯之類的多執行緒應用的話,除了功耗高點,速度的話優於I5低於I7,價效比之王)
記憶體:4G*2
主機板:技嘉880G USB3
硬碟:西數 500G黑盤(本機的編譯速度的極限在這裡,木有錢組RAID,也木有錢上固態)


這裡為了演示方便所以用的虛擬機器
配置好虛擬機器

接下來就是安裝環節
安裝進行時。。。



安裝完成=嶄新的中國專版ubuntu已經呈現我們眼前了


接下來是配置軟體源,這樣做環境的時候下載速度更快,身為一個杭州佬,我用的是阿里源
進入軟體中心

編輯-軟體源

其他站點

china的站點


選擇好後儲存就行

接下來就需要配置安裝環境了
進入桌面之後按CTRL+ALT+T進入終端

首先更新下軟體列表
sudo apt-get update

接下來是安裝基礎環境,這些包的根據是哪來的?後面會提到
sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git subversion libssl-dev libncurses5-dev  patch unzip zlib1g-dev 
如果是64位系統的話還需要安裝32位相容包
sudo apt-get install libc6:i386 libgcc1:i386 libstdc++5:i386 libstdc++6:i386


大概十幾分鐘的漫長等待之後,環境就安裝好了

接下來是下載原始碼
首先請在使用者目錄下mkdir 任意名
cd 任意名
注:任意名為你自己起的名字,不要直接照搬啊,親

原始碼下載地址的話可以通過以下網址檢視
https://dev.openwrt.org/wiki/GetSource

還有這裡要說明一下原始碼名字
以往教程裡面都說backfire是穩定版,trunk是開發板
現在我在此要更正一下
1:trunk是開發板
2:穩定版的話現在大概有4個版本,backfire,AA,BB,CC
3:穩定版都是原來的TRUNK的一個穩定分支
4:backfire感覺是史前文明的產物,最新的ubuntu GCC編譯器已經無法相容backfire的程式碼,除非降級GCC,否則編譯會出錯

本人演示的程式碼用的是openwrt 15.05 最新的穩定版
輸入原始碼的下載命令
git clone git://git.openwrt.org/15.05/openwrt.git 
之後
cd openwrt


接下來下載feeds更新,這是為了下載和安裝讓luci之類的第三方包的原始碼,如果不進行這步的話配置選單是沒有非op的包給你選的
./scripts/feeds update -a
安裝feeds更新
./scripts/feeds install -a

接下來是
make defconfig
檢測環境和新增包,之前的環境安裝就是根據這個來的

然後
make menuconfig
熟悉的介面出來了的哦

第一項為目標系統,用於選擇平臺系列
第二項為子目標
第三項為參考模型,用於選擇目標板型號
其他的話是各種配置之類的東西,一般情況下就配置下第一項和第三項,其他預設就可以出韌體了

我準備編譯一個703的韌體,所以這麼選(接下來的工作全部切換到伺服器,虛擬機器的速度會哭出來)

接下來要新增LUCI
路徑為LUCI-collections-LUCI

其他包的話暫時就不要選吧,因為第一次編譯會下載大量原始碼,為了速度所以包越簡單越好
接下來按ESC退出再退出,最後悔提示儲存,一個回車就搞定了

最後就要開始激動人心的編譯啦首先
make download V=s 
下載dl庫,這樣可以稍微節省點時間

對於第一次編譯,請不要開多執行緒。。。。因為不好排錯
make V=99
就行
如果第一次編譯成功的話,之後的編譯可以充分發揮多核心的優勢了
首先
ulimit -s 10240 
這個命令是防止爆棧
對make加入多執行緒編譯支援
make V=99 -j執行緒數
速度比單執行緒快N倍

接下來是漫長的等待


編譯成功,輸出檔案

生成的檔案在bin/系列名/ 下面

那兩個bin檔案就是刷機檔案了。。。。其中factory是原廠升OP的檔案,sysupgrade為OP升級檔案

另外還有就是介紹一下如何更改韌體大小
編譯target/linux/ar71xx/image/Makefile
查詢到對應機型的定義檔案

現在703是4M的,使用的壓縮模式為tplink-4mlzma,我要變成8M的只需要把tplink-4mlzma改成tplink-8mlzma
CC,BB改韌體大小隻需要改這一個檔案就行,AA的話還要把另外一個韌體生成配置檔案給改掉。。。具體操作方法以後補吧