如何在Ubuntu 20.04中安装编译器g ++-4.8.5

时间:2020-05-21 23:28:55

标签: c++ ubuntu g++ ubuntu-20.04

正如标题所述,我无法在当前的ubuntu(20.04)中安装该特定版本的g ++。

我一直在尝试以下常规方法:sudo apt install g ++-(并显示所有可能性,但那里只有8到10的版本)。寻找gcc的可能性也是如此。

也尝试过此操作:gist.github.com/application2000/73fd6f4bf1be6600a2cf9f56315a2d91(相同的问题)

寻找了一段时间后,我放弃了研究,最终来到了这里。希望比我有更多智慧的人可以帮助我。

3 个答案:

答案 0 :(得分:3)

这些步骤应该有效:

sudo dpkg --add-architecture i386
sudo apt update
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/contrib/download_prerequisites
$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" -j
sudo make install -j

请注意,您必须在某些平台上取消注释.../download_prerequisites。对我来说,它不能在Centos 7或Ubuntu 20上安装必需的软件包的情况下工作:

Ubuntu / Debian:

sudo apt install make wget git gcc g++ lhasa libgmp-dev libmpfr-dev libmpc-dev flex bison gettext texinfo ncurses-dev autoconf rsync

Centos:

sudo yum install wget gcc gcc-c++ python git perl-Pod-Simple gperf patch autoconf automake make makedepend bison flex ncurses-devel gmp-devel mpfr-devel libmpc-devel gettext-devel texinfo

几秒钟后(/咯咯地笑)gcc-4.8.5已安装并可用。 注意:

  1. 如果您没有足够的资源来运行make -j,请省略-j或使用-j4(或其他适合您系统的数字)
  2. 您的里程可能会有所不同,您可能需要安装更多的i386软件包

答案 1 :(得分:0)

由于无法发表评论,我将添加到@bebbo解决方案中,在Ubuntu 20.04上,我必须在他的步骤中添加以下补丁:

  1. 在signal.h中向libsanitizer / asan / asan_linux.cc添加一个include https://patchwork.ozlabs.org/project/gcc/patch/6824253.3U2boEivI2@devpool21/

  2. 在libsanitizer / tsan / tsan_platform_linux.cc中更改一行 如图所示。行号可能不是补丁中所述的行号,因此请搜索已更改的行。无需将补丁应用到其他文件

https://git.pantherx.org/mirror/guix/commit/0b93d04ac537d6413999349ebe7cdcb1e961700e

答案 2 :(得分:0)

添加到 kpeace 的答案...

sed -i '/#include <pthread.h>/a #include <signal.h>' path_to_gcc4.8.5src/libsanitizer/asan/asan_linux.cc
sed -i 's/__res_state \\*statp = (__res_state\\*)state\\;/struct __res_state \\*statp = (struct __res_state\\*)state\\;/g' path_to_gcc4.8.5src/libsanitizer/tsan/tsan_platform_linux.cc

只需添加几行 sed 行即可内联修补它们。

另外,我一直在写一些 Ruby 脚本来安装一些软件(当然是为了好玩。)我最近在 LinuxMint 20.1(基于 Ubuntu 20.04,编译器是系统 gcc:9.3)下成功编译了 gcc-4.8.5 .0,随 sudo apt install build-essential) 一起安装。此外,在运行此脚本之前,我已经安装了 Bebbo 建议的所有软件包,包括 gcc-multiliblibstdc++6:i386检查代码底部的 InstGcc4 类

install_gcc.rb

它们可能会在几个月后变成“不可安装”状态。但至少 gcc-4.8.5 现在可以工作了。

ps。由于 CUDA,我已经开始编译这个旧的 gcc……我的硬件是十年前的 GeForce 9600/9400(是的 2008 MBP),而 CUDA 6.5 是该机器的最佳选择。

pps。无论如何,奇怪的是,我不得不为 CXXFLAGS 发出 '-std=gnu++11' 以避免错误。

相关问题