openwrt 编译外部源码 过程与问题解决

1、openwrt 基本介绍

openwrt 是一个编译工具,帮助自定义编译内核和应用(我的理解)。所以如果有定制自己需要的内核,并基于这个定制化内核编译一些应用的话,可以使用openwrt,openwrt 还是很成熟,很方便的。

(PS:最开始不知道openwrt的时候,我是自己配置编译环境,然后自己编译应用,当然是很复杂的,又要应用和内核版本一致,又有各种规范,一个OVS编了好久才编好;而使用openwrt ,只需要勾选上自己想要的应用就可以了(openwrt 应用源中的应用很多,基本满足我的需求),所以推荐大家使用openwrt)

我使用的openwrt 版本是:19.07.1,想要移植到的平台是:Xilinx ZC702。

2、编译前准备

openwrt源码下载:

        网址是:https://github.com/openwrt/openwrt

                这个不用记,直接谷歌里面输:openwrt github 第一个就是。

        下载:git clone https://github.com.cnpmjs.org/openwrt/openwrt.git .

外部源码准备:

        你需要使用的源码,放在一个位置。

        .config 配置文件

其他应用或者库:

        这个是说有些库或者软件openwrt 确实没有,那么你可以准备下这些库或者软件的源码,借助 openwrt去帮你编译。

        (PS:当然,你不可能一上来就知道哪个库或者软件openwrt 没有,都是先进入到openwrt 里面,make menuconfig ,找一找,搜一搜,发现确实没有的话,你再去准备下这些东西。)

3、开始编译工作

选择版本:

        git tag 看看有哪些版本,我是因为openwrt 对ZC702 的支持从19.07.1 才开始,所以选择这个版本,大家可以根据需求选择版本。

        git checkout 版本号(直接复制git tag给出的某一个版本)

更新openwrt 库并下载:

        ./scripts/feeds update -a         #更新feeds软件源

        ./scripts/feeds install -a        #下载更新

功能选择:

        make menuconfig 

 .config - OpenWrt Configuration
 qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
  lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq OpenWrt Configuration qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
  x  Arrow keys navigate the menu.  <Enter> selects submenus ---> (or empty submenus ----).  Highlighted letters x  
  x  are hotkeys.  Pressing <Y> includes, <N> excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> x  
  x  for Help, </> for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable               x  
  x                                                                                                              x  
  x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x  
  x x                      Target System (Xilinx Zynq 7000 SoCs)  --->                                         x x  
  x x                      Target Profile (Xilinx ZC702)  --->                                                 x x  
  x x                      Target Images  --->                                                                 x x  
  x x                      Global build settings  --->                                                         x x  
  x x                  [*] Advanced configuration options (for developers)  --->                               x x  
  x x                  [ ] Build the OpenWrt Image Builder                                                     x x  
  x x                  [ ] Build the OpenWrt SDK                                                               x x  
  x x                  [ ] Package the OpenWrt-based Toolchain                                                 x x  
  x x                  [ ] Image configuration  --->                                                           x x  
  x x                      Base system  --->                                                                   x x  
  x x                      Administration  --->                                                                x x  
  x x                      Boot Loaders  ----                                                                  x x  
  x x                      Development  --->                                                                   x x  
  x x                      Extra packages  --->                                                                x x  
  x mqqqqqqqqqqqqqqqqqqv(+)qqqqqqqqqqqqqqqqqqqqqqqqqqqq
### OpenWRT 编译教程 对于希望深入了解并定制化配置OpenWRT系统的用户来说,掌握编译过程是一项重要技能。以下是关于如何编译适用于特定硬件平台的OpenWRT固件的方法。 #### 准备工作环境 为了能够顺利编译OpenWRT源码,在本地计算机上需搭建Linux开发环境,并安装必要的依赖包。推荐使用Ubuntu作为宿主机操作系统。确保已安装Git版本控制系统用于获取最新源代码仓库副本;同时还需要安装一系列构建工具链以及库文件来支持后续操作[^3]。 ```bash sudo apt-get update && sudo apt-get install build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext python unzip file screen wget time xz-utils automake autoconf libtool flex bison quilt pkg-config subversion patchelf cmake ninja-build ``` #### 获取源码初始化设置 访问官方GitHub页面下载目标分支或标签对应的完整源树。之后进入项目根目录执行`./scripts/feeds update -a`命令同步所有外部软件包定义至本地缓存区,紧接着运行`./scripts/feeds install -a`完成这些额外组件的实际安装动作。 ```bash git clone https://github.com/openwrt/openwrt.git cd openwrt/ ./scripts/feeds update -a ./scripts/feeds install -a ``` #### 配置内核选项及其他特性开关 启动菜单驱动界面调整各项参数直至满足个人需求为止。这里可以根据具体设备型号挑选合适的架构类型(比如ar71xx),并且开启某些实验性质的功能模块以便测试新特性或是修复现有漏洞等问题[^4]。 ```bash make menuconfig ``` #### 执行实际编译流程 当一切就绪后便可以直接调用Makefile中的默认规则触发整个项目的自动化组装进程。视乎机器性能高低不同而定,此阶段可能耗费数小时甚至更长时间才能结束。期间建议保持网络连接稳定以免中途失败重头再来造成不必要的麻烦。 ```bash time make -j$(nproc) ``` --- ### 烧录方法及固件刷机指南 成功产出镜像文件之后就可以着手准备将其部署到真实物理节点上了。下面介绍几种常见的加载途径供参考: #### Web界面在线升级 如果当前使用的固件已经内置了Luci图形管理后台,则可通过浏览器登录进去找到对应入口上传提前打包好的二进制映像实施无缝切换作业。这种方式最为简便直观易于新手接受[^2]。 #### SSH远程指令推送 针对那些不具备可视化面板控制能力的老款产品而言,借助SSH客户端发送专门设计过的shell脚本或许是个不错的选择。只需按照提示输入合法用户名密码建立安全通道后再依次敲下几条简单语句就能实现相同效果。 ```bash scp /path/to/firmware.bin root@router_ip:/tmp/new_firmware.bin ssh root@router_ip "sysupgrade -v /tmp/new_firmware.bin" ``` #### TFTP无盘引导恢复模式 部分高端企业级交换机允许管理员利用TFTP服务器临时挂载指定路径下的bootloader程序从而绕过原有ROM内容直接读取外接存储介质里的OS核心片段达到快速替换的目的。不过这通常仅限于初次激活或者遇到严重错误无法自行重启的情况下才会考虑采用这种方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值