网上的固件用着总有问题,这里自己编译一个,记录一下过程和遇到的问题。
LEDE原版项目地址 https://github.com/coolsnowwolf/lede
【0】遇到的问题:(解决办法都在文章中相应位置)
- g++: internal compiler error: Killed (program cc1plus)
- checking whether mknod can create fifo without root privileges
- 提示编译时间差异问题
【1】首先准备环境和依赖
sudo apt update && sudo apt upgrade
sudo apt -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex node-uglify gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx-ucl libelf-dev autoconf automake libtool autopoint gcc g++ cmake vim wget ntp ntpdate
【2】编译
从这里向后,全程不需要root用户或者sudo
#下载源码
git clone https://github.com/coolsnowwolf/lede
cd ~/lede
#更新依赖源
./scripts/feeds update -a && ./scripts/feeds install -a
#进入配置界面
make menuconfig
这里 git 、 更新依赖源 和 后边的编译下载过程 都需要良好快速的网络环境哈,自己想办法。
【3】配置
参考 https://openwrt.club/1.html
【4】编译
#下载编译用到的东西,会非常多非常慢
make download V=s
这一段过程可能会遇到上边的问题0.2和0.3,解决办法分别是
0.2解决:checking whether mknod can create fifo without root privileges 不要用root用户或者sudo方式使用make相关命令, 添加环境变量export FORCE_UNSAFE_CONFIGURE=1 参考https://github.com/coolsnowwolf/lede/issues/200
0.3解决:安装ntpdate来同步时间,sudo apt-get install ntp ntpdate , sudo ntpdate ntp1.aliyun.com
#开始正式编译系统,单线程模式
make V=s -j1
这里可能会遇到好多问题,比如上边提到的问题0.1,解决办法是:
0.1解决:g++: internal compiler error: Killed (program cc1plus) 这个出现是内存不足,编译过程需要大量内存,我的机器只有512M内存,所以可以添加swap空间来解决之。参考https://www.cnblogs.com/liqinggai/articles/9023333.html
添加swap:
1. 创建分区文件, 大小 2G
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
2. 生成 swap 文件系统
sudo mkswap /swapfile
3. 激活 swap 文件
sudo swapon /swapfile
4.之后可以删除
sudo rm /swapfile
大功告成,编译完成的固件在 ~/lede/bin/targets/brcm2708/bcm2710
参考:
https://openwrt.club/1.html
来源:oschina
链接:https://my.oschina.net/finchxu/blog/3164849