ubuntu22.04编译openwrt的lede-17.01一些错误的处理方式

    1. m4
c-stack.c:55:26: error: missing binary operator before token “(“ 55 | #elif HAVE_LIBSIGSEGV &&

解决方法:

wget https://raw.githubusercontent.com/keyfour/openwrt/2722d51c5cf6a296b8ecf7ae09e46690403a6c3d/tools/m4/patches/011-fix-sigstksz.patch -O tools/m4/patches/011-fix-sigstksz.patch
  • 2.mklibs
elf.hpp:52:56: error: ISO C++17 does not allow dynamic exception specifications

原因是g++版本较高,可以通过修改tools/mklibs/Makefile,添加HOST_CPPFLAGS += -std=gnu++98,指定使用的C++的标准,不过我处理到这一步时,感觉后面还会有类似的编译器版本过高导致的问题,降编译器版本才是一劳永逸的。lede-17.01我在ubuntu20.04上验证过没啥编译问题,有也打过一些补丁了。所以把ubuntu22.04的编译器降到和ubuntu20.4一样。ubuntu22.04上的是11版本,ubuntu20.04上的是9版本。使用下面的脚本来实现:

#!/bin/bash
apt install gcc-9 g++-9
BINS+=" x86_64-linux-gnu-cpp"
BINS+=" x86_64-linux-gnu-g++"
BINS+=" x86_64-linux-gnu-gcc"
BINS+=" x86_64-linux-gnu-gcc-ar"
BINS+=" x86_64-linux-gnu-gcc-nm"
BINS+=" x86_64-linux-gnu-gcc-ranlib"
BINS+=" x86_64-linux-gnu-gcov"
BINS+=" x86_64-linux-gnu-gcov-dump"
BINS+=" x86_64-linux-gnu-gcov-tool"
BINS+=" gcc"
BINS+=" g++"
BINS+=" cpp"
BINS+=" gcc-ar"
BINS+=" gcc-nm"
BINS+=" gcc-ranlib"
BINS+=" gcov"
BINS+=" gcov-dump"
BINS+=" gcov-tool"
for b in $BINS;do
update-alternatives --install /usr/bin/$b $b /usr/bin/$b-9 50
update-alternatives --install /usr/bin/$b $b /usr/bin/$b-11 30
done
posted @   thammer  阅读(402)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2023-06-13 关于Qt **QNetworkAccessManager**、**QNetworkReply**、**QNetworkRequest**实现ftp下载时,**QNetworkReply**::**downloadProgress**信号的**bytesTotal**一直为-1的原因分析
2023-06-13 使用clion进行远程调试
点击右上角即可分享
微信分享提示