Ubuntu 14.04 x32 编译 Openwrt

搭建环境

Ubuntu,2 CPUs,RAM 2G,Disk 40GB

准备环境

sudo apt-get update
sudo apt-get install gcc g++ quilt libssl-dev xsltproc libxml-parser-perl build-essential libncurses5-dev sphinxsearch libtool sphinx-common binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev subversion git-core gawk libz-dev asciidoc -y

创建文件夹 & 权限

mkdir openwrt
sudo chmod 777 openwrt
cd openwrt

下载源码(2选1)

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

更新软件

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

检查依赖文件(2选1)

make defconfig
make prereq

下次编译前直接更新源码

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

配置界面

make menuconfig

选项

  • Target System > Ralink RT288x/RT3xxx
  • 添加 LUCI(LUCI > collections > LUCI)
  • 添加中文(LuCI > Modules > Translations > Chinese (zh-cn) (NEW) )

操作

Y (Y 键) 将被编译并包含入固件中
* (M 键) 将被编译,但并不包含入固件。可以在使用过程中使用 opkg 命令安装此包
N (N 键) 将不会被编译

首次编译

模式 1:第一次编译建议make V=s,开始 9:41–结束 11:39  近 2 小时

模式 2:

ulimit -s 10240    --防止爆栈
make V=99 -j24   --24 为线程数

开始 00:27–结束 1:42  1 小时 15 分

固件生成的路径

/root/openwrt/openwrt/bin/ath25/

清理工作

make clean      -- 除了清除生成的目录,还想清除交叉编译工具(以及工具链目录)
make dirclean   -- 除所有相关的东西,包括下载的软件包,配置文件,feed 内容等
make distclean  -- 清除所有生成文件

磁盘使用情况

Filesystem Size   Used   Avail  Use% Mounted on
/dev/vda1   40G   9.6G   28G    26%    /

问题集

1.make defconfig 提示错误

Build dependency: Please do not compile as root.
Prerequisite check failed. Use FORCE=1 to override.
make: _*_ [tmp/.prereq-build] Error 1

解决
1.

vi include/prereq-build.mk
define Require/non-root

注销:
“#[ “$$(shell whoami)” != “root” ]`
endef
$(eval $(call Require,non-root,
Please do not compile as root.
))

2.固件大小超过 16MB 不生成 bin, 去掉一些编译选项。

3.解决编译时间太长 ssh 断线

apt-get install screen
screen -S openwrt(或者在 putty 设置 NOOP)