1、OpenWRT編譯

在以前的公司用OpenWRT搭建了一套智能語(yǔ)音的操作系統(tǒng),底層是Linux,適配的芯片平臺(tái)有瑞芯微和國(guó)芯。引入了Android 里L(fēng)inux內(nèi)核以及Android平臺(tái)的一些功能性組件。應(yīng)用層采用采用的是JavaScript語(yǔ)言,JavaScript運(yùn)行在nodejs虛擬即之上,各個(gè)業(yè)務(wù)組件有C++組件也有JS的組件,各個(gè)業(yè)務(wù)模塊以獨(dú)立的服務(wù)進(jìn)程運(yùn)行。各個(gè)業(yè)務(wù)模塊比較好的實(shí)現(xiàn)了接偶合,應(yīng)用層采用JavaScript語(yǔ)言實(shí)現(xiàn),開發(fā)者眾多。系統(tǒng)配置管理以及文件系統(tǒng)的制作采用的是openwrt管理的。我現(xiàn)在從事的是安放行業(yè),安放行業(yè)的嵌入式系統(tǒng)是一個(gè)高度定制的系統(tǒng),目前沒有一個(gè)一個(gè)針對(duì)安放行業(yè)的操作系統(tǒng),缺乏一個(gè)軟件包統(tǒng)一管理以及框架層,讓安放行業(yè)視頻物聯(lián)網(wǎng)行業(yè)應(yīng)用開發(fā)的重復(fù)的工作都非常大。我想基于openwrt的基礎(chǔ)上推出一個(gè)安放行業(yè)或者視頻物聯(lián)網(wǎng)行業(yè)的操作系統(tǒng),包括適配各種安放廠商的芯片以及支持安防行業(yè)的行業(yè)的協(xié)議、支持視覺智能算法,提供框架層,降低視頻物聯(lián)網(wǎng)行業(yè)的應(yīng)用開發(fā)的難度,讓這個(gè)行業(yè)更加開放。
雖然以前玩過openwrt,但是對(duì)于openwrt還不精通。 我第一個(gè)階段的目標(biāo)就是把openwrt支持Hisi系列的芯片。正式這種考慮,開始詳細(xì)學(xué)習(xí)OpenWRT的編譯系統(tǒng)。這個(gè)系列的文章主要是自己系統(tǒng)學(xué)習(xí)一遍openwrt,也是為了公司內(nèi)部分享做準(zhǔn)備。

1、OpenWRT編譯--從源碼到固件

op的編譯過程的wiki:OpenWRT編譯過程

以下步驟的操作環(huán)境為64位的Ubuntu16.04 LTS,路由器型號(hào)位ZBT-WA05,OP版本為CC。

注意事項(xiàng):

  1. 請(qǐng)使用一個(gè)非root用戶來完成這些工作!
  2. 這里的所有命令都在OpenWrt編譯系統(tǒng)的根目錄下運(yùn)行(例如~/openwrt/trunk/)
  3. 編譯系統(tǒng)的絕對(duì)路徑中不能含有空格!
  4. 如果你使用root用戶下載了源碼,請(qǐng)把你下載來的源碼的所有者更改為一個(gè)非root用戶。
sudo chown -R user:user /openwrt/

1、準(zhǔn)備工作

安裝編譯所需的工具,在Ubuntu下輸入一下命名:

sudo apt-get update
sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip
sudo apt-get install subversion mercurial
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev 

2、下載源碼

需準(zhǔn)備12GB左右的空間,源碼體積百兆左右,但是編譯過程中會(huì)產(chǎn)生大量文件,會(huì)使文件夾體積非常大。大部分SVN都是失效的,所以一些老的教程就不能參考了,這點(diǎn)要注意。要使用git來下載源碼。要下載哪個(gè)版本可以參考wiki(上面的鏈接)以CC版本為例,在主文件夾下執(zhí)行:

git clone https://github.com/openwrt/openwrt.git

3、下載可用的feeds

cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

等待下載完成

4、編譯配置選項(xiàng)

make menuconfig

用方向鍵、空格(選擇,出現(xiàn)M代表編譯但不編譯到固件,*號(hào)表示編譯進(jìn)固件)、按兩下esc返回等操作來配置選項(xiàng),選擇硬件平臺(tái)、CPU型號(hào)等選項(xiàng).

選擇Package the OpenWrt-base Toolchain是為了有搭建交叉編譯環(huán)境方便,不是必選的。
此外,勾選LuCI(網(wǎng)頁(yè)形式的控制臺(tái))還是非常必要的。要勾選(前面出現(xiàn)*號(hào)):
LuCI-->1.Collections-->luci
別忘記勾選中文:
LuCI-->2.Modules-->Translations-->Chinese(zh-cn)

最后Save,退出。
以上是基本的固件編譯,如果需要其他功能,要再勾選或添加。

5、編譯執(zhí)行命令

make V=s -j9

V=s 代表顯示編譯信息,一定要勾選,否則出錯(cuò)的話無法看到錯(cuò)誤信息。
-j8代表使用的CPU線程數(shù)量,4C8T的CPU可是使用8個(gè)線程提高速度,使用時(shí)有時(shí)會(huì)出錯(cuò),可以改成-j1或者不加這個(gè)參數(shù)。

6、得到固件

顯示如下信息,并且終端上沒有error信息時(shí),表示編譯成功。

Signing package index...
make[2]: Leaving directory '/home/goldmoon/openwrt'
make[1]: Leaving directory '/home/goldmoon/openwrt'

/home/goldmoon/openwrt/bin/ramips/openwrt-ramips-mt7620-zbt-wa05-squashfs-sysupgrade.bin
這個(gè)文件就是我們想要的固件。

關(guān)于在ubuntu下編譯openwrt更詳細(xì)的教程可以參考:OpenWRT編譯燒寫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容