[openwrt]:斐訊K3C OPCC+中大H3C校園網認證配置指南(二) 交叉編譯

上篇說的是如何刷k3c 的OpenWrt固件,現在來說說交叉編譯的事情,也可以百度/Google “OpenWrt交叉編譯” 獲取更多內容。

編譯適用於自己平臺的軟件(k3c爲例)

不同機型由於CPU架構不同,現有的軟件可能滿足不了運行要求,目前路由器的主流的是博通的芯片,大多數基於arm/mips。arm也分armv7等等架構,架構、指令集不同,c程序通常無法運行。因爲c/c++是對底層架構敏感的,而路由器通常沒有編譯環境,這時候我們就需要在其他電腦上完成交叉編譯。交叉編譯,簡單來說就是在一個平臺上生成另一個平臺上的可執行文件。

很多熱門路由器,會有很多固件,也有很多編譯好的軟件集成在openwrt裏面,因此沒有太大必要自己編譯,這裏只針對實在找不到對應CPU架構的軟件時的情況。

下載Toolchain

熱門機型的SDK在官網有,可以查下自己的CPU架構然後去OpenWrt官網查看。

k3c沒有在官方機型裏面,不過好在有@paldier維護的SDK,裏面有構建所需的工具鏈,下面以nu-h3c爲例,解釋如何交叉編譯得到可執行文件。以下使用linux(win10 linux子系統也可以)操作

下載OpenWrt SDK

熱門機型可以查下自己的CPU架構然後去OpenWrt官網查看,K3C直接下載@paldier的git倉庫

git clone https://github.com/paldier/K3C.git
cd K3C/
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig

會出現OpenWrt Configuration的圖形界面

TIM截圖20180726155747.png

選擇Load->k3c256.config,然後Exit

TIM截圖20180726155803.png

make  #會自動構建依賴、編譯固件以及相關模塊

完成後Toolchain在K3C/staging_dir/toolchain-mips_mips32_gcc-4.8-linaro_uClibc-0.9.33.2。修改環境變量:

vim  ~/.bashrc

在末尾加上

export PATH=$PATH:[k3c根目錄]/K3C/staging_dir/toolchain-mips_mips32_gcc-4.8-linaro_uClibc-0.9.33.2/bin
export STAGING_DIR=[k3c根目錄]/K3C/staging_dir/
export CC=mips-openwrt-linux-uclibc-gcc
export GCC=mips-openwrt-linux-uclibc-gcc

其中[k3c根目錄]是指K3C文件夾的絕對路徑

source ~/.bashrc

編譯nu-h3c

這樣可以應對大部分沒有依賴庫的編譯工作,比如nu-h3c

git clone cd nu-k3c
make # 即可,Makefile裏寫的是$(CC),會自動找到[k3c根目錄]/K3C/staging_dir/toolchain-mips_mips32_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-gcc 編譯器

至此交叉編譯就完成了,scp複製文件到路由器上即可執行

 

打包成ipk包

如同Debian/RedHat 的包管理工具dpkg/rpm,OpenWrt也使用了一套opkg包管理工具。可以用OpenWrt SDK打包對應平臺的程序爲.ipk文件。這方面內容我瞭解也不夠深入,只能大致講一講如何簡單使用OpenWrt SDK。這裏以sysuh3c爲例,作者@zonyitoo給了完整的使用方法

TIM截圖20180726161503.png

按照其步驟修改,如果不清楚CPU架構,可以PKGARCHH:=all代替。以剛纔的K3C爲例:

cd K3C/
git clone [email protected]:zonyitoo/sysuh3c.git -b openwrt package/sysuh3c
vim package/sysuh3c/Makefile   #PKGARCHH:=[arch] 改爲PKGARCHH:=all

TIM截圖20180726162051.png

然後更新feed:

cd K3C
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig

去到Utilities->選中sysuh3c 然後按M,

TIM截圖20180726162837.png

退出並保存,然後

make #會構建配置的模塊以及固件,所以時間很長,不過它會自己解決依賴問題,比如這個sysuh3c依賴於libc/libgcc/libuci

也可以單獨構建sysuh3c,不過就要自己解決依賴問題了

make package/sysuh3c/compile

一般生成的ipk文件在bin/文件夾下,我這裏是:

TIM截圖20180726163021.png

 

 

PS:這裏的Makefile是給OpenWrt SDK看的,寫法與正常Makefile不同,詳情請查閱OpenWrt官方文檔或者Google。

這次折騰交叉編譯h3c主要收穫的就是這些,如果說法有問題還請指正,畢竟這塊我瞭解的還是太少。

歡迎去我的博客參觀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章