[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主要收获的就是这些,如果说法有问题还请指正,毕竟这块我了解的还是太少。

欢迎去我的博客参观

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