1. 程式人生 > 實用技巧 >Widora的編譯過程

Widora的編譯過程

做好的虛擬機器

https://pan.baidu.com/s/1HyuF0Oe-rvca8KoufMXemg 分卷解壓,系統密碼:111111

搭建編譯環境

編譯OpenWrt需要Linux環境或mac環境。

Linux(建議使用Ubuntu16.04)https://mirrors.ustc.edu.cn/

注意1: 在Ubuntu18.04上編譯將無法通過,所以推薦使用低版本編譯
注意2: 如果提示找不到openjdk-8-jdk,可以試試openjdk-7-jdk
注意3: 十分不建議在WSL環境下編譯,奇怪問題太多
編譯前要安裝以下依賴:

  $ sudo apt-get update 
  $ sudo apt-get install git g++ make libncurses5-dev subversion libssl-dev gawk libxml-parser-perl unzip wget python xz-utils vim zlibc zlib1g zlib1g-dev openjdk-8-jdk build-essential ccache gettext xsltproc

如果是64位,需要多操作如下步驟:

  $ sudo dpkg --add-architecture i386
  $ sudo apt-get update
  $ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

macOS(未測試Catalina)

首先從APP Store中安裝Xcode command line tools,再安裝[brew]工具,接下來使用brew安裝依賴:

  $ brew install coreutils findutils gawk gnu-getopt gnu-tar grep wget quilt xz

編譯中極有可能碰到getopt和xgettext問題,碰到後做以下兩步:

  $ brew ln gnu-getopt --force
  $ ln -s /usr/local/Cellar/gettext/0.18.1.1/bin/xgettext xgettext

如果編譯過程中有"date illegal option"錯誤,因為macos裡預設的date不是GNU的date,引數有些差異,可以這樣:

  $ cd /usr/local/bin/
  $ ln -s gdate date

重新開啟終端後生效,此時

localhost:~ mango$ date --v
date (GNU coreutils) 8.29
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
 

Written by David MacKenzie.

下載原始碼

下載程式碼,master分支

  $ git clone https://github.com/widora/openwrt_widora.git

如果太慢就用映象地址

  $ git clone https://github.com.cnpmjs.org/widora/openwrt_widora.git

更新原始碼

  $ git pull

更新完後,由於本地編譯環境有上次的殘留,會造成異常,最好做如下清理工作(在openwrt_widora資料夾目錄內):

make clean
/scripts/feeds update -a
/scripts/feeds install -a
rm -r tmp/
rm .config

重啟ubuntu系統後

make menuconfig

編譯
下載依賴

$make download V=s

在國內編譯OpenWrt很困難,有很多包被牆無法下載。我們提供了一個dl映象的連結:https://pan.baidu.com/s/1j9qZ2G7zyF7h5YF3nQJ4SA

更新並安裝軟體包

  $ ./scripts/feeds update -a 
  $ ./scripts/feeds install -a

配置OpenWrt

$ rm .config
$ make menuconfig

選擇項 16MB+128MB配置(BIT3 BIT4,16MB FLASH):


Target System: Ralink RT288x/RT3xxx 
  Subtarget: MT7688 based boards 
     Target Profile: WIDORA16128 

32MB+128MB配置(BIT3 BIT4,32MB FLASH):

Target System: Ralink RT288x/RT3xxx 
  Subtarget: MT7688 based boards 
    Target Profile: WIDORA32128

16MB+64MB配置(BIT5,16MB FLASH):

Target System: Ralink RT288x/RT3xxx 
  Subtarget: MT7688 based boards 
     Target Profile: WIDORA1664 

32MB+64MB配置(BIT5,32MB FLASH):

Target System: Ralink RT288x/RT3xxx 
  Subtarget: MT7688 based boards 
    Target Profile: WIDORA3264

儲存退出

發現有時候由於環境的差異,選擇WIDORA後其他的依賴沒有自動被處理好,這裡上傳一份我本地選擇WIDORA32128後的".config"檔案,方便大家出問題後替換。https://widora.io/_media/1.config.txt

快速編譯命令是

$ make -j4

可能會由於環境或網路問題出錯,想檢視錯誤資訊需要用 $ make V=s 命令
整個編譯在dl資料夾完整的情況下持續1個小時左右,編譯完會在bin/ramips目錄生成韌體,大概6MB,名字類似如下:

openwrt-ramips-mt7688-WIDORAxxxx-squashfs-sysupgrade.bin