OpenWrt build system是OpenWrt这个Linux发行版的编译程序。OpenWrt build system 能够在Linux、BSD或者Mac OS

我们建议您使用一个Linux发行版(例如:Debian)。您可以选择在您的电脑上单独安装一个,或者安装在虚拟机当中。(例如VMware或者Qemu).

Cygwin(Windows)将不会被支持,因为它缺少一个对大小写敏感的文件系统。

旧的Buildroot版本的相关信息请参见: buildroot.exigence.old

centos7 编译openwrt linux编译openwrt_git

常见问题、性能信息以及一些常见优化请参见: development

环境要求

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

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

wip

在Linux上的安装步骤

注意:

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

主要步骤:

  1. 安装git以下载OpenWrt源码。安装编译工具以进行交叉编译:
sudo apt-get update
sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip
  1. feeds中的部分软件包可能只能通过subversion (缩写: svn)或者mercurial下载源代码。如果你需要安装这些软件包,你同时也应当安装svn和mercurial:
sudo apt-get install subversion mercurial
  • 关于编译环境的详细信息请参见:make和build-essential

  • 关于git的详细信息请参见:git(7)

  • 关于subversion tool的详细信息请参见:svn和subversion documentation (multiple languages)

  1. 通过git来下载OpenWrt bleeding edge(trunk版本):(参见Downloading Sources以获得更多选择):
git clone git://git.openwrt.org/openwrt.git
  1. 这将会创建'openwrt'这个目录。这个目录将会是OpenWrt的编译主目录。 OpenWrt的交叉编译工具链也已经被包含在内。
  2. (可选)下载并安装所有可用的"feeds"(参见OpenWrt Feeds以获取更多选择):
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
  1. 运行下面的命令让OpenWrt编译系统检查你的编译环境中缺失的软件包:
make defconfig
make prereq
make menuconfig
  1. 然后你就可以开始编译了。参见:build

各操作系统及编译条件对照表

下表所示为linux操作系统各发行版所需要的编译环境条件及软件包对照表:

名称

Debian

SUSE

Red Hat

OS

Fedora

NetBSD

Arch

Gentoo

asciidoc

asciidoc

asciidoc

asciidoc

asciidoc

asciidoc

?

asciidoc

app-text/asciidoc

GNU Bash

bash

bash

bash

bash

bash

bash

bash

app-shells/bash

GNU bc

bc

bc

 

 

bc

 

bc

sys-devel/bc

GNU Binutils

binutils

binutils

binutils

binutils

binutils

?

binutils

sys-devel/binutils

bzip2

bzip2

bzip2

bzip2

bzip2

bzip2

?

bzip2

app-arch/bzip2

fastjar

fastjar

fastjar

libgcj

fastjar

libgcj

?

fastjar

app-arch/fastjar

flex

flex

flex

flex

flex

flex

?

flex

sys-devel/flex

git

git-core

git-core

git

git-core

git

?

git

dev-vcs/git

GNU C++ Compiler

g

gcc-c

?

gcc

sys-devel/gcc

 

 

 

GNU C Compiler

gcc

gcc

gcc

?

gcc

?

gcc

sys-devel/gcc

getopt

util-linux

util-linux

util-linux

getopt

util-linux

getopt

util-linux

sys-apps/util-linux

GNU awk

gawk

gawk

gawk

gawk

gawk

?

gawk

sys-apps/gawk

gtk2.0-dev

libgtk2.0-dev

gtk2-devel

gtk2-devel

gtk2

gtk2-devel

?

gtk2

x11-libs/gtk+:2

intltool-update

intltool

intltool

intltool

intltool

intltool

?

intltool

dev-util/intltool

jikes

jikespg

jikes

?

jikes


?

aur/jikes

dev-java/jikes

libz, libz-dev

zlib1g-dev

zlib-devel

zlib-devel

zlib

zlib-devel

?

zlib

sys-libs/zlib

Mercurial / hg

 

mercurial

 

 

hg

 

 

dev-vcs/mercurial

make

make

make

make

gmake

make

gmake

make

sys-devel/make

mkisofs

genisoimage

genisoimage

?

?

genisoimage

?

cdrkit

virtual/cdrtools

ncurses

libncurses5-dev

ncurses-devel

ncurses-devel

ncurses

ncurses-devel

?

ncurses

sys-libs/ncurses

openssl/ssl.h

libssl-dev

libopenssl-devel

openssl-devel

openssl

openssl-devel

?

openssl

dev-libs/openssl

patch

patch

patch

patch

patchutils

patch

?

patch

sys-devel/patch

perl-ExtUtils-MakeMaker

perl-modules

perl-ExtUtils-MakeMaker

perl-ExtUtils-MakeMaker

p5-extutils-makemaker

perl-ExtUtils-MakeMaker

?

perl-extutils-makemaker

virtual/perl-ExtUtils-MakeMaker

python2.6-dev

python2.6-dev

python-devel

?

python26

python-devel

?

python2

dev-lang/python:2.6

rsync

rsync

rsync

rsync

rsync

rsync

?

rsync

net-misc/rsync

ruby

ruby

ruby

?

ruby

ruby

?

ruby

dev-lang/ruby

sdcc

sdcc

sdcc

sdcc

sdcc

sdcc

?

sdcc

dev-embedded/sdcc

unzip

unzip

unzip

unzip

unzip

unzip

?

unzip

app-arch/unzip

GNU Wget

wget

wget

wget

wget

wget

?

wget

net-misc/wget

xgettext

gettext

gettext-tools

gettext

gettext

gettext

?

gettext

sys-devel/gettext

xsltproc

xsltproc

libxslt-tools

?

libxslt

libxslt

?

libxslt

dev-libs/libxslt

zlib, zlib-static

zlib1g-dev

zlib-devel

zlib-devel

zlib-devel

zlib-devel,zlib-static

?

zlib

sys-libs/zlib

但是,make config并不会检查所有软件包,比如:

Package

Prerequisite

Debian (8)

SUSE

Red Hat

OS

Fedora

NetBSD

Arch

Gentoo

boost

bjam / boost-jam

libboost1.55-dev

 

 

 

boost-jam

boost

dev-util/boost-build

intltool

[Perl] XML::Parser

libxml-parser-perl

 

perl-XML-Parser

 

perl-XML-Parser

 

intltool

dev-perl/XML-Parser

libftdi

libusb-config

libusb-dev

 

 

 

libusb-devel

 

libusb

dev-libs/libusb-compat

lilo

as86,ld86

bin86

 

 

 

dev86

 

bin86

sys-devel/bin86

lilo

bcc

bcc

 

 

 

dev86

 

aur/bcc

sys-devel/dev86

lilo

uudecode

sharutils

 

 

 

sharutils

 

sharutils

app-arch/sharutils

classpath

javac, gcj

openjdk-7-jdk

 

 

 

java-1.7.0-openjdk-devel

 

jdk7-openjdk

dev-java/oracle-jdk-bin, sys-devel/gcc[gcj], and one (or both) of dev-java/icedtea-bin:7 and dev-java/icedtea:7

mac80211

b43-fwcutter

 

 

 

 

b43-fwcutter

 

b43-fwcutter

net-wireless/b43-fwcutter

jamvm

zip

 

 

 

 

zip

 

 

app-arch/zip

安装编译所需软件包的例子

  • 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:
$ 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'

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

15.05分支(Chaos Calmer)

 

从官方源下载

 

git clone git://git.openwrt.org/15.05/openwrt.git

14.07分支(Barrier Breaker)

 

从官方源下载

 

git clone git://git.openwrt.org/14.07/openwrt.git

12.09分支(Attitude Adjustment)

 

从官方源下载

 

git clone git://git.openwrt.org/12.09/openwrt.git
额外的软件包

 

git clone git://git.openwrt.org/12.09/packages.git

SVN

参见:Deprecated Buildroot-Installation Howto

centos7 编译openwrt linux编译openwrt_git

连接我们的SVN服务器可能会导致你的IP被SVN服务器以及我们的论坛禁止访问。与Git相比,使用SVN检出一份完整的代码将会用时更久。OpenWrt开发者建议你们使用Git下载源代码。