编译x-Wrt 全过程

参考自;​​​​​​c编译教程 | All about X-Wrt

需要详细了解的小伙伴还请参看原文 ^-^

概念:

x-wrt(基于openwrt深度定制的发行版本)

编译系统: ubuntu22.04

注意:

特别注意的是,整个编译过程,都是用 普通用户 操作,不要用 root用户 操作。

安装编译所需要的软件包:

sudo apt install build-essential ecj fastjar file flex g++ gcc-multilib g++-multilib gawk gettext git git-core java-propose-classpath libelf-dev libncurses5-dev libncursesw5-dev libssl-dev swig python3 python3-dev python3-distutils python3-pyelftools subversion unzip wget zlib1g-dev rsync qemu-utils

安装结果如下:

下载源码:

从github上clone源码:

git clone https://github.com/x-wrt/x-wrt.git

进入上面拉取过来的文件夹

cd x-wrt

#更新代码tag:

git fetch origin

git fetch origin --tag

#列出可以使用的版本tag:

git tag

#注意摁 q 键结束

#或者直接获取最新发布版本

git describe --tags $(git rev-list --tags --max-count=1)

#选择并切换到指定的版本tag:

git checkout -f <tag-name>

在 Git 中,"tag"(标签)是一种用于标记特定提交点的机制,它给该提交点一个易于记忆和引用的名字。

例如

git checkout -f 22.03_b202204051420

#或者 直接切换到最新版本额度tag

git checkout -f $(git describe --tags $(git rev-list --tags --max-count=1))

#更新代码:

./scripts/feeds update -a

./scripts/feeds install -a

配置固件

配置步骤

配置固件的命令make menuconfig 但是我们可以从配置模版开始会更轻松一些。

比如ramips-mt7621的设备可以用拷贝这个模版feeds/x/rom/lede/config.ramips-mt7621 内核分区限制小的设备,选用 -nosymbol 结尾的config配置模版

cp feeds/x/rom/lede/config.ramips-mt7621 .config

上面已经cp 拷贝了模版配置到 .config # 例如

cp feeds/x/rom/lede/config.ramips-mt7621 .config # 下面继续操作和修改

#1 执行 make menuconfig

#2 进入 Target Profile 选择需要编译打包的设备型号,选择型号后立刻退出,保存

#3 执行下面的命令修复 .config

sh feeds/x/rom/lede/fix-config.sh

#4 再次执行 make menuconfig 然后立刻退出保存

#5 最后一次 执行 make menuconfig 自定义选择你需要的软件包

更多配置

配置目标

在上述准备好的模版配置文件的基础上,执行make menuconfig命令进行个性化定制,增删应用。

定位到各个子菜单,选择对应的软件包

执行编译

命令:

make

或者

make -j1 V=s

生成的包在bin/targets/下面

如果需要再次修改配置编译,只要不是换设备 ,都可以直接**make menuconfig**修改后就编译,如果需要修改设备,请从拷贝模版配置的地方重新开始配置。

在使用 make 命令时,-lV=s 是两个不同的选项,它们各自有不同的作用:

  • -l:这个选项告诉 make 在执行时不要超过指定的负载(load)。如果系统同时运行的 make 实例太多,make 将等待直到负载降低到这个阈值以下。这有助于避免在构建过程中过度使用系统资源。

  • V=s:这里的 V 选项设置 make 的详细程度(verbosity)。s 通常代表 "silent"(静默),意味着 make 将尽可能少地显示信息,通常只显示错误和警告。这有助于减少输出的噪音,特别是在日志文件中。

将这两个选项结合起来使用 make -l V=s 可能不是一个有效的命令,因为 -l 选项后面通常需要跟一个数字来指定负载限制,例如 make -l1。如果您的意图是设置详细程度为静默,并且限制系统负载,您应该分开写这两个选项,或者在 -l 后面提供一个具体的数字

总结

我们编译固件的时候一定要看编译出来的调试信息,缺少什么就去下载什么。

编译make menuconfig的时候我们很多时候不用手动的去 一个个在菜单里面去选,可以直接 cp 前人配置好的 config配置文件到 .config 里面,再执行

sh feeds/x/rom/lede/fix-config.sh

修复一下,即可配置成功,这个时候再次进去到make menuconfig 即可看到我们的配置结果,保存退出即可。

的以后如果我们有新的方案,要更新新的东西,我们修改config 文件即可,也没必要直接打开页面去配置。

我们在进行 编译前,如果有之前配置好的库文件,可以在当前目录下建立一个软链接,比如

ln -s /work/dl dl

这样编译的时候,下载库和工具的时候,会优先查找本地路劲,如果找不到再到云端去找,这样我们把库和工具放在本地路径了,就省略了编译的时候去云端下载拉取的时间。

相关推荐
Lill_bin9 小时前
深入理解ElasticSearch集群:架构、高可用性与数据一致性
大数据·分布式·elasticsearch·搜索引擎·zookeeper·架构·全文检索
涛思数据(TDengine)9 小时前
TDengine 与 SCADA 强强联合:提升工业数据管理的效率与精准
大数据·时序数据库·tdengine
isNotNullX10 小时前
如何用SQL Server和Oracle进行数据同步?
大数据·数据库·sql·oracle
RwTo11 小时前
Elasticsearch 聚合搜索
大数据·elasticsearch·搜索引擎·全文检索
isNotNullX11 小时前
HBase在大数据实时处理中的角色
大数据·数据库·hbase
白总Server12 小时前
MySQL在大数据场景应用
大数据·开发语言·数据库·后端·mysql·golang·php
求学小火龙12 小时前
ElasticSearch介绍+使用
java·大数据·elasticsearch
檀越剑指大厂12 小时前
【Elasticsearch系列六】系统命令API
大数据·elasticsearch·搜索引擎
数据运营新视界12 小时前
你知道企业架构中核心的4大架构联系和不同吗?
大数据·架构
h1771134720513 小时前
基于区块链的相亲交易系统源码解析
大数据·人工智能·安全·系统架构·交友