编译 openwrt 最新实战详细教程

2023-11-02

网上找了很多相关的教程,有些教程太旧了,很多地方都有坑。本人根据一些相关的教程,做了一次实战对比,弥补相关的坑。

 

从源代码构建固件

本节介绍如何从源代码为MTK 7688开发板构建固件。

环境

Ubuntu LTS 14.04.3环境下执行以下操作。对于WindowsMac OS X主机,可以将虚拟机安装为具有相同的环境: 

http://www.ubuntu.com下载Ubuntu 14.04.3 LTS映像 

在主机上使用VirtualBoxhttp://virtualbox.org)安装此映像。建议为虚拟机保留50GB的磁盘空间。

步骤:

Ubuntu系统中,打开  Terminal  应用程序,然后输入以下命令:

1.安装必备软件包以构建固件:

命令:sudo apt-get install git g++ libncurses5-dev subversion libssl-dev gawk libxml-parser-perl unzip

2.下载OpenWrt CC源代码:

这一步网上很多教程都有问题,主要是随着时间推移,源代码的网址很多都发生了改变。

下载源码,分两种,一种是最新版但不是最稳定,也就是trunk版,一种是相对稳定版,backfire版。源码下载命令分别是:

先创建文件夹:

命令:mkdir openwrt

cd openwrt

目前,最新的网址更新如下,建议先用浏览器进入,找到正确的路径再git clone

 

http://git.archive.openwrt.org/15.05/openwrt.git

 

https://git.archive.openwrt.org/15.05/openwrt.git

 

git://git.archive.openwrt.org/15.05/openwrt.git

命令: git clone git:// git.archive.openwrt.org /15.05/openwrt.git 

3. 准备供稿的默认配置文件:

命令:  cd openwrt
命令: cp feeds.conf.default feeds.conf  

4. 添加MTK 7688开发板的提要:

命令: echo src-git linkit https://github.com/MediaTek-Labs/linkit-smart-7688-feed.git >> feeds.conf  

5. 更新所有可用软件包的提要信息以构建固件:

命令: ./scripts/feeds update 

6. 安装所有软件包:

命令: ./scripts/feeds install -a  

7. 准备内核配置:

命令: make menuconfig  
  1. 选择以下选项:
    • 目标配置文件:LinkIt7688
    • 子目标:基于MTk7688的板
    • 目标系统:Ralink RT288x / RT3xxx
    • 保存并退出(使用默认配置文件,无需进行任何修改)
  2. 开始编译过程:
命令:make V= 99 

8.  构建过程完成后,生成的固件文件将位于“ bin / ramips / openwrt-ramips-mtk7688-squashfs-sysupgrade.bin ”下。根据主机环境的硬件资源,构建过程可能  需要2个多小时

9.  您可以使用此文件通过Web UI更新固件,也可以将其重命名为  lks7688.img  以通过USB驱动器进行更新。

                                                           

 

10. Make解释:

执行make V=s进行整体编译,第一次编译建议使用make V=s,可以看到详细的编译过程以及出错信息,如果想要加快编译速度,可以添加参数-j n,表示使用n条线程同时编译。

整体编译分成下面几个步骤,包括编译host工具、编译交叉工具链、编译内核模块、编译ipk、安装ipk到文件系统、编译内核、将内核和文件系统组合成最终的bin文件。

 

白浪介绍:

(1)一位自媒体极客,面向射频、微波、天线、无线通信、智能硬件、软件编程、渗透安全、人工智能、区块链,Java、Android、C/C++、python等方向的综合能力培养提升。

(2)各种学习资料、学习软件分享(仅供学生学习)。

1.扫码关注公众号(Geekxiaobai)

                                             

2. 在后台发送“Python高级编程”“CST”或“HFSS” 或“Altium”等,即可免费获得学习资源。仅供学习之用。

3. 扫码关注后,查看往期内容,会有更多资料惊喜等着你来拿哦  

  想要更多相关学习资料,可以在公众号后面留言哦,后期将会根据留言需求免费分享学习资料哦。

========******=========******========******=========******==========

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译 openwrt 最新实战详细教程 的相关文章

  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • CoAP数据包的大小是多少?

    我是这项技术的新手 有人可以帮助我了解一些疑问吗 Q 1 CoAP数据包的大小是多少 我知道有 4 字节固定标头 但是包括标头 选项和负载在内的最大大小限制是多少 Q 2 有像MQTT那样的Keep Alive的概念吗 它在UDP上工作 它
  • Linux 上的用户空间能否实现本机代码的抢占式多任务处理?

    我想知道是否可以在 Linux 用户空间的单个进程中实现本机代码的抢占式多任务处理 也就是说 从外部暂停一些正在运行的本机代码 保存上下文 交换到不同的上下文 然后恢复执行 所有这些都由用户空间精心安排 但使用可能进入内核的调用 我认为这可
  • 删除 Git 存储库,但保留所有文件

    在我使用 Linux 的过程中的某个时刻 我决定将我的主目录中的所有内容都放入源代码管理中是个好主意 我不是在问这是否是一个好主意 我是在问如何撤销它 删除存储库的原因是我最近安装了 Oh My Zsh 而且我非常喜欢它 问题是我的主目录有
  • 我不明白 execlp() 在 Linux 中如何工作

    过去两天我一直在试图理解execlp 系统调用 但我还在这里 让我直奔主题 The man pageexeclp 将系统调用声明为int execlp const char file const char arg 与描述 execl exe
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • 使用 Grep 查找两个短语之间的文本块(包括短语)

    是否可以使用 grep 来高亮所有以以下内容开头的文本 mutablePath CGPathCreateMutable 并以以下内容结尾 CGPathAddPath skinMutablePath NULL mutablePath 这两个短
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca
  • 如何在 iOS 应用程序中检测所有可用的 Wifi 网络并连接到其中之一

    在我的 iOS 应用程序中 我想检测所有可用的 wifi 网络 然后从列表中选择一个网络并连接到它 目标是不打开应用程序内置的设置来连接 Wi Fi 而是在我的应用程序中完成这一切 首先 这可能吗 如果可能的话 请指出要使用哪些框架和方法
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed

随机推荐