搭建openwrt编译环境
注意!!!
1. 请使用一个非root用户来完成这些工作!
2. 这里的所有命令都在OpenWrt编译系统的根目录下运行(例如~/openwrt/trunk/)
3. 编译系统的绝对路径中不能含有空格!
4. 如果你使用root用户下载了源码,请把你下载来的源码的所有者更改为一个非root用户。(sudo chown -R user:user /openwrt/)
获取源代码及基本条件
1.安装[git](https://en.wikipedia.org/wiki/Git%20(software) "https://en.wikipedia.org/wiki/Git (software)")
以下载OpenWrt源码。安装[编译工具](https://en.wikipedia.org/wiki/GNU%20build%20system "https://en.wikipedia.org/wiki/GNU build system")
以进行交叉编译:
1 | sudo apt-get update |
feeds中的部分软件包可能只能通过[subversion](https://en.wikipedia.org/wiki/Apache%20Subversion "https://en.wikipedia.org/wiki/Apache Subversion")
(缩写: svn
)或者[mercurial](https://en.wikipedia.org/wiki/Mercurial "https://en.wikipedia.org/wiki/Mercurial")
下载源代码。如果你需要安装这些软件包,你同时也应当安装svn和mercurial:
sudo apt-get install subversion mercurial
关于编译环境的详细信息请参见:
[make](http://man.cx/make "http://man.cx/make")
和build-essential关于git的详细信息请参见:
[git(7)](http://man.cx/git%287%29 "http://man.cx/git%287%29")
关于subversion tool的详细信息请参见:
[svn](http://man.cx/svn "http://man.cx/svn")
和subversion documentation (multiple languages)2.通过
git
来下载OpenWrt bleeding edge(trunk版本):(参见Downloading Sources以获得更多选择):
git clone git://git.openwrt.org/openwrt.git
这将会创建’openwrt’这个目录。这个目录将会是OpenWrt的编译主目录。 OpenWrt的交叉编译工具链也已经被包含在内。
3.(可选)下载并安装所有可用的”feeds”(参见OpenWrt Feeds以获取更多选择):
1 | cd openwrt |
4.运行下面的命令让OpenWrt编译系统检查你的编译环境中缺失的软件包:
1 | make defconfig |
在这里你讲可以选择你想要编译的软件包。 5.然后你就可以开始编译了。参见:build
安装编译所需的软件包
- Arch Linux
pacman -S --needed subversion asciidoc bash bc binutils bzip2 fastjar flex git gcc util-linux gawk intltool zlib make cdrkit ncurses openssl patch perl-extutils-makemaker rsync sdcc unzip wget gettext libxslt boost libusb bin86 sharutils b43-fwcutter findutils
- Debian 7 Wheezy:
apt-get install libncurses5-dev zlib1g-dev gawk
- Fedora 22 - 64Bit:
dnf install -y subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel zlib-static make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static quilt sed sdcc intltool sharutils bison wget openssl-devel
- openSUSE 13.2:
zypper install asciidoc bash bc binutils bzip2 fastjar flex git-core gcc-c++ gcc util-linux gawk gtk2-devel intltool jikes zlib-devel mercurial make genisoimage ncurses-devel libopenssl-devel patch perl-ExtUtils-MakeMaker python-devel rsync ruby sdcc unzip wget gettext-tools libxslt-tools zlib-devel subversion
- Ubuntu 12.04LTS:
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip
- Ubuntu 64bit:
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev
- Centos x86-64:
yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static quilt ncurses-lib sed sdcc intltool sharutils bison wget git-core openssl-devel xz
- Gentoo:
1 | $ echo \\ |
已知的不能编译OpenWrt的Linux发行版
- alpine linux使用musl作为libc的替代品。一些工具无法被编译通过。(例如mtd-utils, e2fsprogs)也许相关的检测代码需要被重写。(gcc -dumpmachine outputs a result where some scripts will fail - tools/sed)
各种版本的简介
GIT
使用以下命令之一可以通过git下载一份你想要的源码:
trunk (主开发分支)
开发版的源码 (trunk)包括了文档以及**实验性的** 补丁
从官方源下载
git clone git://git.openwrt.org/openwrt.git
更多额外的软件包在feeds中提供。(例如Luci, packages, routing, management等feed源)。请使用OpenWrt编译系统下载正确的feed源。 更多版本参考:https://dev.openwrt.org/wiki/GetSource