上篇说的是如何刷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的图形界面

选择Load->k3c256.config,然后Exit

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给了完整的使用方法

按照其步骤修改,如果不清楚CPU架构,可以PKGARCHH:=all代替。以刚才的K3C为例:

cd K3C/
git clone git@github.com:zonyitoo/sysuh3c.git -b openwrt package/sysuh3c
vim package/sysuh3c/Makefile   #PKGARCHH:=[arch] 改为PKGARCHH:=all

然后更新feed:

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

去到Utilities->选中sysuh3c 然后按M,

退出并保存,然后

make #会构建配置的模块以及固件,所以时间很长,不过它会自己解决依赖问题,比如这个sysuh3c依赖于libc/libgcc/libuci

也可以单独构建sysuh3c,不过就要自己解决依赖问题了

make package/sysuh3c/compile

一般生成的ipk文件在bin/文件夹下,我这里是:

PS:这里的Makefile是给OpenWrt SDK看的,写法与正常Makefile不同,详情请查阅OpenWrt官方文档或者Google。

这次折腾交叉编译h3c主要收获的就是这些,如果说法有问题还请指正,毕竟这块我了解的还是太少。

欢迎去我的博客参观

[openwrt]:斐讯K3C OPCC+中大H3C校园网认证配置指南(二) 交叉编译相关推荐

  1. 斐讯 K3C V32.1.45.267 V1.1官改升级操作

    2019独角兽企业重金招聘Python工程师标准>>> 20180415上车试水,原版本支持的功能较少,因此刷了官改版本,本身对路由不是很了解,这里就记录一下就好了,官改的版本支持的 ...

  2. H3C 交换机 OpenFlow 配置指南

    H3C 交换机 OpenFlow 配置指南 目录 Console 连接交换机 配置 VLAN 创建实例并映射 VLAN 配置控制器1的IP地址并激活实例 验证配置 1. Console 连接交换机 笔 ...

  3. openwrt需要在VMware运行时make menuconfig 如何配置 (二)

    1.需要在VMware下运行openwrt的menuconfig配置 make menuconfig 2.Target System:选择X86 3.Target Image:选择ext4和Build ...

  4. H3C PPP MP配置示例二(续)

    转载于:https://www.cnblogs.com/fanweisheng/p/11165452.html

  5. openwrt配置内核驱动_为斐讯K2P编译OpenWRT LEDE,并启用mtk闭源wifi驱动及H3C认证

    写在最前:只有A1/A2版的K2P才能照本文编译固件并刷入,B1/B2版切莫作死. 一.简述 写在最前,只有A1/A2版本的K2P能照本文编译固件并刷入,B1版本切莫作死.虽然斐讯迟早翻车 现在已经翻 ...

  6. 真假路由“易混淆” 斐讯K系列“做典范”

    百兆宽带入户时代已经到来,家中上网竟如"吃瘪"一样,还是熟悉的龟速和卡顿.花大银子却不买账,百兆宽带空成摆设.实际上这可能是因为你的老式路由早已落伍,跟不上百兆网速的节奏.自此,传 ...

  7. 斐讯盒子N1-docker 入门一

    一.斐讯N1盒子可以在拼多多上买 二.刷机教程网上有很多,我这里刷了armbian系统 三.刷机完成后开始安装docker (1)更新下载源 vi etc/apt/sources.list deb [ ...

  8. 斐讯k2为什么不能加虚拟服务器,斐讯K2路由器怎么设置桥接_斐讯K2无线中继设置教程-192路由网...

    问:斐讯K2路由器怎么设置桥接? 我想用斐讯K2无线路由器,桥接家里另一台路由器的信号,应该怎么设置? 答:斐讯K2路由器的无线桥接(中继)设置,其实非常的简单. 只需要先登录到斐讯K2的设置界面,在 ...

  9. 斐讯k2搭建php环境,斐讯K2路由器怎么设置桥接_斐讯K2无线中继设置教程-192路由网...

    问:斐讯K2路由器怎么设置桥接? 我想用斐讯K2无线路由器,桥接家里另一台路由器的信号,应该怎么设置? 答:斐讯K2路由器的无线桥接(中继)设置,其实非常的简单. 只需要先登录到斐讯K2的设置界面,在 ...

最新文章

  1. javascript优化_如何通过使用服务人员来优化JavaScript应用
  2. SAP HUM 将HU与检验批号码解除关联关系
  3. react系列知识---11组件间抽象
  4. Mybatis映射文件动态SQL语句-02
  5. Openjudge-计算概论(A)-求分数序列和
  6. 智慧城市_城市大脑:加速构建智慧城市
  7. 从微信的改版中我看到了微信的焦虑
  8. System.Net.Mail和System.Web.Mail
  9. (39)FPGA面试题Verilog实现卖报机
  10. java解析xml文件失败,在Java中解析大型XML文件时找不到文件异常
  11. java awt 教程_JAVA教程第五讲AWT图形用户界面设计
  12. 华尔街持续唱多美股市场,微美全息发布VR设备领涨科技股
  13. Unity 在安卓手机上实时调试
  14. 《Detecting Adversarial Examples through Image Transformation》和CW attack的阅读笔记
  15. 什么是监管数据?什么是监管信息系统?监管数据安全管理办法说了什么?
  16. android集成环信客服云_2019.6.12
  17. sql语句查询时,where条件同时使用and和or
  18. 代码“可读性”到底有多重要?
  19. 【c++入门(2)】贪心训练
  20. Rust的面向对象(五)——面向对象

热门文章

  1. python考核试题及答案
  2. 一次登录接口502问题排查过程
  3. 4s店计算机系统有哪些,4s店管理系统
  4. LS1028A性能介绍-NXP Layerscape 系列功能对比-飞凌LS1028开发板评测
  5. java计算机毕业设计计算机组成原理教学网站源码+mysql数据库+系统+lw文档+部署
  6. Go C画图 CSP-J CSP-S NOIP 信息学奥赛(51套)
  7. Kotlin系列之Kotlin初体验
  8. 实现pandas导入excel时保留公式的文本内容
  9. 『文献回顾』“文本自动摘要” 相关文献综述
  10. 《瀚兰房地产开发区块链应用及案例分享》BSN培训精华回顾