注意!!!
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
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)
2.通过git
来下载OpenWrt bleeding edge(trunk版本):(参见Downloading Sources以获得更多选择):
git clone git://git.openwrt.org/openwrt.git
这将会创建’openwrt’这个目录。这个目录将会是OpenWrt的编译主目录。
OpenWrt的交叉编译工具链也已经被包含在内。
3.(可选)下载并安装所有可用的”feeds”(参见OpenWrt Feeds以获取更多选择):
cd openwrt ./scripts/feeds update -a ./scripts/feeds install -a
4.运行下面的命令让OpenWrt编译系统检查你的编译环境中缺失的软件包:
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:
$ 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