我在 ubuntu 24.04 上构建 gcc-4.8.5 时遇到错误
我已按照页面如何在 ubuntu 20.04 中安装编译器 g++-4.8.5 中提到的步骤进行操作
sudo dpkg --add-architecture i386
sudo dpkg --add-architecture i386
sudo apt upgrade
sudo apt-get install gcc-multilib libstdc++6:i386
wget https://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2 --no-check-certificate
tar xf gcc-4.8.5.tar.bz2
sed -i -e 's/__attribute__/\/\/__attribute__/g' gcc-4.8.5/gcc/cp/cfns.h
sed -i 's/struct ucontext/ucontext_t/g' gcc-4.8.5/libgcc/config/i386/linux-unwind.h
mkdir xgcc-4.8.5
pushd xgcc-4.8.5
$PWD/../gcc-4.8.5/configure --enable-languages=c,c++ --prefix=/usr --enable-shared --enable-plugin -- program-suffix=-4.8.5
make MAKEINFO="makeinfo --force"
sudo make install
但是,我得到了如下错误:
gcc/reload1.c:89:24:错误:在 C++17 89 中禁止在“operator++”中使用“bool”类型的操作数 | (this_target_reload->x_spill_indirect_levels) | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ ../.. /gcc/reload1.c:443:7:注意:在宏“spill_indirect_levels”的扩展中 443 | 溢出_间接_级别++;
最后,我能够按照以下步骤在 Ubuntu 上构建 gcc-4.8.5:
在 Ubuntu 24.04 机器上从源代码构建 gcc-4.8.5 的步骤:
sudo apt update
sudo apt升级
sudo apt install build-essential libgmp-dev libmpfr-dev libmpc-dev texinfo wget
sudo apt install make wget git gcc g++ lhasa libgmp-dev libmpfr-dev libmpc-dev flex bison gettext texinfo ncurses-dev autoconf rsync
tar -xzvf gcc-4.8.5.tar.gz
cd gcc-4.8.5
vi gcc/reload1.c //打开reload1.c文件并 //搜索“spill_indirect_levels++”并将“spill_indirect_levels++”替换为“spill_indirect_levels = 1”
sed -i -e 's/属性///属性/g' gcc/cp/cfns.h
sed -i 's/struct ucontext/ucontext_t/g' libgcc/config/i386/linux-unwind.h
sed -i '/#include
/a #include ' libsanitizer/asan/asan_linux.cc vi libsanitizer/tsan/tsan_platform_linux.cc //打开 tsan_platform_linux.cc 文件 // 搜索“statp”并替换以下行:“__res_state statp = ( __res_state)state;” AS“结构 __res_state statp = (struct __res_state)state;” 13) vi libitm/config/linux/rwlock.cc //打开rwlock.cc文件 // 搜索“typeof”并替换“typeof” 整个文件中的 AS“typeof”
mkdir 构建
cd 构建
../configure --prefix=/usr/local/gcc-4.8.5 --enable-languages=c,c++ --disable-multilib --disable-bootstrap
sudo make -j 24
sudo make install