写在前面
本人有加速器,无加速器请移步别处。
本人希望这篇可以让一个小白(比如本人)能够顺利的完成openwrt的编译。如有问题请大家指正。
本文参考文献:
https://blog.csdn.net/qq_33195791/article/details/138462502
https://github.com/coolsnowwolf/lede/issues/11891
这里真的非常感谢第二篇,因为第一篇编译的是最新的git的代码,那玩意一直跟新,个人感觉不知道哪天就出个啥bug,这里建议大家找个稳定版本,本人用的下面有下载链接,本人前一天晚上编译都快编译完成了,但是因为虚拟机硬盘分配的空间不够,导致系统进不去乱删一通腾出空间导致需要重新编译,第二天跟新了下仓库就开始报错,后面一直卡着过不去。
第二篇是个报错求助(我也报了一样的错误),但是他把安装步骤给出了,我参考了他的过程和别人的解决报错方法给出了我自己的安装方法。
更新软件包 & 安装依赖
sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \
libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \
libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 \
python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \
uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev llvm clang
sudo apt-get -y autoremove --purge
sudo apt-get clean
下载源码
git clone --depth 1 https://github.com/coolsnowwolf/lede -b master openwrt //下载最新源码 但是会编译失败 尝试无果,建议使用下面的。
https://git.openwrt.org/?p=openwrt/openwrt.git;a=snapshot;h=01170d518da1c8ade9d26e56d0135d12cda8e781;sf=tgz //本人用的这个
打印当前目录
cd openwrt
pwd
更新软件包 & 安装依赖
apt search qemu-img --- 查找文件名
apt install qemu-utils -- 得到文件名,install
./scripts/feeds update -a
./scripts/feeds install -a
前两句可以不执行,但是不执行下面两行有概率不能过
下载dl库
make download -j$(nproc)
该步骤可能会报一个说没有dl目录的错误,直接
sudo mkdir dl
sudo chmod 777 dl
该步骤略花时间,出错就重新执行,或者删除那个出错的包重新执行,有加速器就能顺利下载。
删除缓存
make clean
make dirclean
打印标识
echo "删除前输出目录"
ls -al
删除临时文件
sudo rm -rf tmp
sudo rm -rf staging_dir
make menuconfig配置
编译准备工作完成后,接下来就可以配置进行编译了。
只需简单的几步,就可以开始编译。
此处,我们使用x86虚拟机进行测试,因此,编译目标系统选择x86 64
3.1 选中目标CPU类型
3.2 选中镜像文件格式
目标镜像文件输出,我们选VDI,方便在virtualBox虚拟机创建。
此外,如无需http服务,那么Luci选项可以使用默认,无需勾选。如需勾选,可以在menuconfig界面输入"/"来进行uhttp依赖关系查找。
编译固件
make V=s -j$(nproc)
【常见错误解决】“you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment)
echo "export set FORCE_UNSAFE_CONFIGURE=1" >> /etc/profile
source /etc/profile
//最好重启终端
//如果还是不行,看看是否存在~/profile文件,如果存在,在~/profile中也添加相应内容
make编译
su
make -j8
这个步骤建议先进入root,不然后面会报一堆权限的问题。