编译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  

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

相关推荐

  1. x264 编码过程中视频相关数据流转分析

    2024-07-14 23:14:04       23 阅读
  2. C语言编译过程

    2024-07-14 23:14:04       31 阅读
  3. GUN编译器(gcc/g++)- 编译过程

    2024-07-14 23:14:04       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 23:14:04       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 23:14:04       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 23:14:04       57 阅读
  4. Python语言-面向对象

    2024-07-14 23:14:04       68 阅读

热门阅读

  1. R语言简单介绍及零基础学习路径

    2024-07-14 23:14:04       19 阅读
  2. 在unity中的球形插值方法中第三个参数t是什么

    2024-07-14 23:14:04       18 阅读
  3. linux安装pure-ftpd-1.0.51

    2024-07-14 23:14:04       17 阅读
  4. Linux 编程中的 open() 与 fdopen() 区别与联系

    2024-07-14 23:14:04       19 阅读
  5. iPython 使用技巧

    2024-07-14 23:14:04       16 阅读
  6. C基础入门题:石头剪刀布

    2024-07-14 23:14:04       21 阅读
  7. Linux C++编程-实现进程的冻结与恢复管理模块

    2024-07-14 23:14:04       17 阅读