编译问题

V=Sc 输出编译问题,很多时候是因为下载慢或失败,代理要设置好

很多时候在不同平台下编译有各种各样的问题,所以要视情况而定,根据编译日志适当修改对应模块的 MakeFile 甚至是源码。(多利用单模块编译)

命令收集

Feed 更新

1
2
3
4
./scripts/feeds update -a
./scripts/feeds install -a

make menuconfig

清理文件

make cleanmake dircleanmake distclean

设置固件参数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Modify default IP
sed -i 's/192.168.1.1/192.168.77.252/g' package/base-files/files/bin/config_generate

# Modify default theme
sed -i 's/luci-theme-bootstrap/luci-theme-argon/g' feeds/luci/collections/luci/Makefile

# Modify hostname
sed -i 's/OpenWrt/MicroNas/g' package/base-files/files/bin/config_generate

   
# 加入编译者信息  
sed -i "s/OpenWrt /Cardinalsad build $(TZ=UTC-8 date "+%Y.%m.%d") @ OpenWrt /g" package/lean/default-settings/files/zzz-default-settings

编译

Soft-Float 问题

有的 Openwrt 不支持 Hard-Soft

添加 -msoft-float

多线程

1
echo -e "$(nproc) thread compile"

预下载编译所需的软件包

make download -j8

检查文件完整性

find dl -size -1024c -exec ls -l {} \;
检查文件完整性命令可以列出下载不完整的文件,小于 1k 的文件属于下载不完整,如果存在则用下面的命令删除,然后重新下载编译所需的软件包,再次检查
确认所有文件完整可大大提高编译成功率,避免浪费时间 (慎用这个下面这个删除命令,因为很多文件真的会有小于 1k 的导致你的编译错误)
find dl -size -1024c -exec rm -f {} \;

二次编译

更新软件列表、升级软件包

1
2
3
4
5
sudo sh -c "apt update && apt upgrade -y"

cd lede
git pull
./scripts/feeds update -a && ./scripts/feeds install -a

单独插件编译(用来排查错误最好)

1
2
3
4
5
6
7
8
make package/XXX/clean (清除某个模块)  
  
make package/XXX/compile (#单独编译某模块 #V=99表示输出详细的debug信息)  
  
make package/XXX/install  
  
# 例如单独编译haibo库中passwall  
make package/feeds/haibo/luci-app-passwall/compile V=99ma

Arm 下的编译问题

Golang 编译错误

go-bootstrap cannot be installed on linux/arm64

1
2
修改 .config 使用内部安装的 Go
CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT="/usr/bin/go"