搭建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
2
sudo apt-get update
sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip

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
2
3
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

4.运行下面的命令让OpenWrt编译系统检查你的编译环境中缺失的软件包:

1
2
3
make defconfig
make prereq
make menuconfig

在这里你讲可以选择你想要编译的软件包。 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ echo \\
app-arch/{bzip2,fastjar,sharutils,unzip,zip} \\
app-text/asciidoc dev-java/{icedtea:7,jikes,oracle-jdk-bin} \\
dev-libs/{libusb-compat,libxslt,openssl} dev-util/intltool \\
dev-vcs/{git,mercurial} net-misc/{rsync,wget} \\
net-wireless/b43-fwcutter sys-apps/{gawk,util-linux} \\
sys-devel/{bc,bin86,binutils,dev86,flex,gcc\[gcj\],gettext} \\
sys-libs/{ncurses,zlib} virtual/{cdrtools,perl-ExtUtils-MakeMaker} \\
x11-libs/gtk+:2 \\
sed 's/\\s/\\n/g' \\
sort \\
sudo tee /etc/portage/sets/openwrt-prerequisites \\
&& sudo emerge -DuvNa '@openwrt-prerequisites'

* && sudo emerge \-DuvNa '@openwrt-prerequisites'

已知的不能编译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