编译原版OpenWrt

2,784次阅读
没有评论

共计 2245 个字符,预计需要花费 6 分钟才能阅读完成。

项目地址

官方编译文档

环境要求

编译一个可以安装的 OpenWrt 固件镜像文件(大约 8MB 大小的),你需要:

  • 一个纯净的 OpenWrt 编译系统大约需要 200MB 的空间。
  • 一个包含 feeds 的 OpenWrt 编译系统大约需要 300MB 的空间。
  • 编译 feeds 中的软件包大约需要 2.1GB 的空间用于存放下载来的源代码。
  • 构建 OpenWrt 并生成固件文件需要大约 3 -4 GB 的空间。
  • 编译 OpenWrt 需要大约 1 -4 GB 的内存。

安装依赖(Ubuntu 14.04 LTS)

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib linux-libc-dev:i386 curl

在 Linux 上的安装步骤

1. 请使用一个 非 root 用户 来完成这些工作!
2. 这里的所有命令都在 OpenWrt 编译系统的根目录下运行(例如~/openwrt/trunk/
3. 编译系统的绝对路径中不能含有空格!
4. 如果你使用 root 用户下载了源码,请把你下载来的源码的所有者更改为一个非 root 用户。(sudo chown -R user:user /openwrt/)

  • 安装 git 以下载 OpenWrt 源码。安装编译工具以进行交叉编译:
 sudo apt-get update
 sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip
  • feeds 中的部分软件包可能只能通过 subversion (缩写: svn)或者 mercurial 下载源代码。如果你需要安装这些软件包,你同时也应当安装 svn 和 mercurial:
sudo apt-get install subversion mercurial
  • 通过 git 来下载 OpenWrt bleeding edge(trunk 版本):(参见 Downloading Sources 以获得更多选择):
git clone git://github.com/openwrt/openwrt.git

这将会创建 'openwrt' 这个目录。这个目录将会是 OpenWrt 的编译主目录。
OpenWrt 的交叉编译工具链也已经被包含在内。

  • OpenWrt 源码更新频繁,进入工作目录执行(非更新不必操作此步骤)
git pull
  • 进入工作目录更新源和安装下载好的包

cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

运行下面的命令 (3 选 1!) 让 OpenWrt 编译系统检查你的编译环境中缺失的软件包:
make menuconfig (推荐使用此命令)
或者
make defconfig
或者
make prereq
// 如果以上 3 个命令都运行了, 编译会出错!
在菜单里选择你想要编译的软件包和 CPU 型号。

  • 编译,make -j1 V=s // -j4 使用四个线程编译, 速度快。V= s 可以看到详细的编译过程和错误信息
  • 第一次编译推荐使用单线程,后续编译使用多线程

  • 上面是详细教程说明,依赖安装完成后,可以直接使用下方命令直接使用

第一次编译 命令执行

git clone git://github.com/openwrt/openwrt.git 下载源码
cd openwrt 进入项目目录
./scripts/feeds update -a && ./scripts/feeds install -a  更新 feeds
make menuconfig   进入编译配置菜单
make download V=s 预先下载所需包
make -j1 V=s   首次编译建议使用单线程,开始编译

第二次编译 命令执行

在下次编译其他固件的时候,使用如下命令

cd openwrt 进入项目目录
git pull 更新源码
./scripts/feeds update -a && ./scripts/feeds install -a  更新 feeds
rm -rf ./tmp && rm -rf .config 清除编译配置和缓存
make menuconfig 进入编译配置菜单
make download V=s 预先下载所需包
make -j5 V=s   一般为机器线程数 +1,开始编译

国内编译慢问题

vim ~/.bashrc 编辑代理文件
export ALL_PROXY=socks5://192.168.1.2:1080 // 最好一行添加代理地址
source ~/.bashrc 生效

编译后路径

  • 项目目录 /bin/targets/ 芯片厂商 / 芯片型号
  • 找到结尾为:-squashfs-sysupgrade.bin 的文件,这个就是刷机包

正文完
 
Hlynford
版权声明:本站原创文章,由 Hlynford 2020-03-12发表,共计2245字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)