程序员

Debian 9 64bit下编译Openwrt

2018-04-27  本文已影响0人  龜山島

固件需要在非root环境下进行

一,源码构建

安装所需环境:

sudo apt-get install gcc zlib1g-dev subversion unzip make python flex git libncurses5-dev build-essential libssl-dev gawk gettext

在非root下,用户的home目录取LEDE源码:

git clone https://github.com/openwrt/openwrt.git

源码下载完成后运行:

cd source
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make prereq
make menuconfig
make tools/install && make toolchain/install

选择自己需要定制的路由和各种软件包,执行编译:

make V=s           ## 多核CPU的话,可以加上参数 "-j 3",3是CPU的核心数加1,根据自己的实际情况而定,如果make过程出现错误,就不要使用这个参数。

接下来就是漫长的等待..............
编译完的固件保存在当前的bin目录下。

清理作业有三个命令:make cleanmake dircleanmake distclean,第一个会清理掉bin和build_dir文件夹,第二个会清理掉/bin, /build_dir, /staging_dir 和 /toolchain,第三个会清理全部,恢复到刚拉取的源码状态,feeds也要重做。

二,用image builder 快速构建

以tl-wr841-v5路由为例:

wget https://downloads.lede-project.org/releases/17.01.0/targets/ar71xx/generic/lede-imagebuilder-17.01.0-ar71xx-generic.Linux-x86_64.tar.xz
tar -xf lede-imagebuilder-17.01.0-ar71xx-generic.Linux-x86_64.tar.xz
cd lede-imagebuilder-17.01.0-ar71xx-generic.Linux-x86_64
make info #查看默认软件包和硬件支持列表
make image PROFILE="tl-wr841-v5" PACKAGES="luci luci-i18n-base-zh-cn -ppp -ppp-mod-pppoe" -j2 ## 指定机型+双线程,PACKAGES变量指定了一个要被包含进去的包文件的列表。如果一个包文件的名字前面有一个前缀"-"减号,那么这个文件会被从镜像中排除出去。

这样很快就能编译完成,刷入路由,直接用192.168.1.1登陆就可以设置。

关于路由不能达到300M的设置方法:
SSH 登陆路由

uci set wireless.radio0.hwmode=11bgn
uci set wireless.radio0.noscan=1
uci commit
reboot

构建单个包

为OpenWrt开发或打包软件时,可以方便地只构建需要的包(以cups包为例):

make package/cups/compile V=99

如果是在feeds下安装的

make package/feeds/packages/cups/compile v=99

高亮构建错误

如果构建不知怎么搞的出错了,亮出错误的最简单方式是:

make V=99 2>&1 | tee build.log | grep -i error

以上命令会保存一份详尽的编译输出到/openwrt/trunk/build.log,并只在屏幕上输出错误。

上一篇下一篇

猜你喜欢

热点阅读