Openwrt研習筆記三之原始碼的下載和編譯
哎呀,昨天拉下一天的筆記沒寫,不過這也不能怪我,是我的網站伺服器出問題了,釋出不了….今天補上昨天的內容
上一篇說到刷TL-WR703N的系統成openwrt,那些都是網上搜羅的,按照著做就好了,先學習才能進步嘛
今天要記錄的內容有:下載原始碼,ubuntu13.04下編譯原始碼
下載原始碼
首先你下載得準備幾個工具,下載工具:svn或者git,編譯工具:ubuntu的編譯軟體
我們還是以ubuntu為介紹先吧,下載ubuntu13.04並安裝,你可以採用virtual box或者vmware,並配置好網路,確保能否上網,也就是要保證apt-get能下載,這一步我在這裡就不做介紹了,改天有時間特別製作一個文章來描述。
如果不能上網,也可以通過DVD包來製作本地更新源來滿足要求,但下載原始碼還是要網路的。
在滿足了擁有ubuntu13.04、網路暢通的情況下,我們開始進行下面的工作。
首先,通過
apt-get install git-core
apt-get install subversion
通過上述兩個命令,我們分別安裝了git和svn工具,這兩個工具是目前網路上使用最為廣泛的程式碼管理工具,其中git適合於分散式,svn適合於集中管理,兩個軟體,我個人認為git更好用,只是git的圖形軟體很不給力,而svn的圖形軟體TortoiseSVN很給力,也很容易理解和上手,只是git在命令列介面也很不錯,只是有些人認為命令列的工具總是不那麼容易讓人理解而已,關於這兩個工具的使用,我也會在另外的文章再做介紹,只是個人使用經驗不多,也只能描述簡單的入門吧。
trunk (main development tree)
- Main repository
git clone git://git.openwrt.org/openwrt.git
- Packages feed
git clone git://git.openwrt.org/packages.git
12.09 branch (Attitude Adjustment)
- Main repository
git clone git://git.openwrt.org/12.09/openwrt.git
- Packages feed
git clone git://git.openwrt.org/12.09/packages.git
上面的方法是通過git clone下來的,這裡稍微解釋下,git的意思其實就是指程式碼倉庫,每個git都會在本地擁有一個.git的資料夾進行程式碼的管理,這就方便了個人在本地新增,修改,刪除,回退等操作,git clone是指將一個git庫的程式碼clone到你本地,也就是你clone的程式碼地址和你本地進行同步,同步完成後你本地也成了儲存程式碼的地方。
下載完成後,就能看到對應的檔案。
下圖是通過git下載完成後的tree圖:
[email protected]:/home/geeknimo/disk/study/openwrt_source/git_code# tree -L 3
.
├── 12.09
│ ├── openwrt
│ │ ├── BSDmakefile
│ │ ├── Config.in
│ │ ├── docs
│ │ ├── feeds.conf.default
│ │ ├── include
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── package
│ │ ├── README
│ │ ├── rules.mk
│ │ ├── scripts
│ │ ├── target
│ │ ├── toolchain
│ │ └── tools
│ └── packages
│ ├── admin
│ ├── devel
│ ├── ipv6
│ ├── lang
│ ├── libs
│ ├── multimedia
│ ├── net
│ ├── skels
│ ├── sound
│ └── utils
└── trunk
├── openwrt
│ ├── BSDmakefile
│ ├── Config.in
│ ├── docs
│ ├── feeds.conf.default
│ ├── include
│ ├── LICENSE
│ ├── Makefile
│ ├── package
│ ├── README
│ ├── rules.mk
│ ├── scripts
│ ├── target
│ ├── toolchain
│ └── tools
└── packages
├── admin
├── devel
├── ipv6
├── lang
├── libs
├── multimedia
├── net
├── send
├── skels
├── sound
└── utils43 directories, 14 files
svn的下載方法如下:
-
Development branch: ChangeLog
svn co svn://svn.openwrt.org/openwrt/trunk/
- Attitude Adjustment 12.09 branch: ChangeLog
svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment
- Backfire 10.03 branch: ChangeLog
svn co svn://svn.openwrt.org/openwrt/branches/backfire
- Kamikaze 8.09 branch: ChangeLog
svn co svn://svn.openwrt.org/openwrt/branches/8.09
-
Kamikaze 7.09 branch: ChangeLog
svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.09
svn的程式碼我就不貼上來,大致是一樣的。
編譯原始碼
下載好原始碼後,還需要準備編譯工具,安裝的軟體有些多,如果你不是root使用者登陸的話,請使用sudo來執行命令。
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev subversion git-core gawk asciidoc libz-dev
這個安裝需要一些時間,所以建議大家還是製作本地的下載源比較好。
準備好上面的工具後我們就可以開始編譯了。
進入到原始碼所在的目錄,我這裡選取的是主branch的openwrt的程式碼庫
假設程式碼所在的位置為:
/home/geeknimo/disk/study/openwrt_source/git_code/trunk/openwrt
將openwrt的整個目錄及子目錄都賦予777許可權,並進行原始碼更新
chmod -R 777 openwrt
git pull
更新完畢後,進行種子更新
操作方法
- 更新種子列表,看起來是
./scripts/feeds update -a
- 更新種子在menuconfig中的顯示列表
./scripts/feeds install -a
這個更新也需要一些時間。
更新完畢後,再進行安裝下,這兩個步驟完成後開始進行編譯前配置了。
make defconfig
make menuconfig
執行這個命令的時候還提示瞭如下錯誤:
Build dependency: Please do not compile as root.
Prerequisite check failed. Use FORCE=1 to override.
make: *** [tmp/.prereq-build] Error 1
[email protected]:/home/geeknimo/disk/study/openwrt_source/git_code/trunk/openwrt#
竟然還不能用root使用者進行編譯,不過我在後面加上了 FORCE=1,呵呵,這也是可以的,不過還是建議大家換成普通使用者進行。
在這裡進行我們所需要的配置
首先選擇Target System為Atheros AR7xxx/AR9xxx,因為我們的TL-WR703N的主晶片是屬於Atheros公司的Atheros AR7240 CPU
其次選擇Target Profile是選擇路由器的型號,我們選擇(TP-LINK TL-WR703N)
其他的就看自己的喜好了,我隨意勾選了一些,先編譯了試試,據說這個編譯普通的機器要3-5個小時,囧。
明天再說結果把,今天就到這裡了。