-
- 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
标签:gcc,x86,gnu,ubuntu22.04,64,17.01,linux,lede,BINS
From: https://www.cnblogs.com/thammer/p/18246710