解决方法:Ubuntu18.04下编译OpenWRT15.05遇到的问题

一、问题1

执行
make V=99
报出错误:
Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/${ <-- HERE ([^ \t=:+{}]+)}/ at xxxx/usr/bin/automake line 3939

二、原因

从perl v5.22开始:不再推荐在正则表达式中使用 {,而且如果没有转义 { 会有错误警告,从v5.26开始:不仅有警告,还会有语法错误提示。
此为Perl版本更新后对语法规范进行了变更,若左花括号作为文本则应当进行转义。

三、解决方法

openwrt 目录下
cd build_dir/host/automake-1.15/bin/
vim automake
输入/text =
找到$text =~ s/\${([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/ge;
修改为$text =~ s/\$[{]([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/ge;

四、问题2

执行
make V=99
报出错误:
build_dir/host/u-boot-2014.10/lib/rsa/rsa-sign.c:279:21: error: dereferencing pointer to incomplete type 'RSA {aka struct rsa_st}'

五、原因

此为Ubuntu18.04安装的libssl-dev为1.1版本,而OpenWrt 15.05.1不支持此版本,需要回退到1.0版本

六、解决方法

使用aptitude软件包管理器
sudo apt-get install aptitude
卸载之前的版本
sudo aptitude remove libssl-dev
安装1.0版本
apt-get install libssl1.0.0


• 由 Leung 写于 2020 年 6 月 24 日

• 参考:UBUNTU 18.04下编译OPENWRT 15.05.1遇到的问题和解决方案