如何在 Ubuntu 18.04 上构建和安装 gcc-5.4.0?

如何在 Ubuntu 18.04 上构建和安装 gcc-5.4.0?

我已经尝试了几种方法在我的 PC 上构建和安装 gcc-5.4.0;

我运行了这个代码:

GCC_VERSION="5.4.0"
WORKDIR="$HOME/src/"
INSTALLDIR="/platform"

cd $WORKDIR
wget http://www.netgull.com/gcc/releases/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.bz2
tar -xf gcc-${GCC_VERSION}.tar.bz2

cd gcc-${GCC_VERSION}
./contrib/download_prerequisites

cd ..
mkdir gcc-build
cd gcc-build

../gcc-${GCC_VERSION}/configure                      \
    --prefix=${INSTALLDIR}                           \
    --enable-shared                                  \
    --enable-threads=posix                           \
    --enable-__cxa_atexit                            \
    --enable-clocale=gnu                             \
    --enable-languages=all                           \
&& make \
&& make install

它不起作用;告诉我应该禁用多库。

我使用这个代码做到了:

GCC_VERSION="5.4.0"
WORKDIR="$HOME/src/"
INSTALLDIR="/platform"

cd $WORKDIR
wget http://www.netgull.com/gcc/releases/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.bz2
tar -xf gcc-${GCC_VERSION}.tar.bz2

cd gcc-${GCC_VERSION}
./contrib/download_prerequisites

cd ..
mkdir gcc-build
cd gcc-build

../gcc-${GCC_VERSION}/configure                      \
    --prefix=${INSTALLDIR}                           \
    --enable-shared                                  \
    --enable-threads=posix                           \
    --enable-__cxa_atexit                            \
    --enable-clocale=gnu                             \
    --enable-languages=all                           \
    --disable-multilib                               \
&& make \
&& make install

它运行了将近半个小时,并生成了一个多达 1 GB 的目录。因此,我怀疑源文件有问题,并中断了它。

然后我尝试从其他来源下载 gcc-5.4.0。

使用以下命令进行编译:

GCC_VERSION="5.4.0"
WORKDIR="$HOME/src/"
INSTALLDIR="/platform"

cd $WORKDIR
wget http://ftpmirror.gnu.org/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.bz2
tar -xf gcc-${GCC_VERSION}.tar.bz2

cd gcc-${GCC_VERSION}
./contrib/download_prerequisites

cd ..
mkdir gcc-build
cd gcc-build

../gcc-${GCC_VERSION}/configure                      \
    --prefix=${INSTALLDIR}                           \
    --disable-multilib                               \
    --enable-shared                                  \
    --enable-threads=posix                           \
    --enable-__cxa_atexit                            \
    --enable-clocale=gnu                             \
    --enable-languages=all                           \
&& make \
&& make install

我再次收到错误,您知道有什么直接的方法可以解决此问题吗?

答案1

... 运行了将近半个小时,并生成了一个 1 GB 大小的目录。所以我怀疑源文件有问题,于是中断了它。

有可能您走在正确的轨道上,并匆忙过早停止了构建。根据您的机器的强度,30 分钟对于构建 GCC 来说听起来并不算不合理。最重要的是,您正在使用 进行构建make,这意味着源文件是按顺序编译的,一次一个,这是 make 的默认设置。为了显著加快构建速度,请运行make -j,它将使用所有 CPU 核心并行构建,或者make -j4运行 4 个并行编译作业,例如。

至于构建大小,我怀疑默认情况下,GCC 以调试模式构建,这可以解释臃肿的构建文件夹(相比之下,LLVM 调试构建很容易堆叠到 > 4GB)。

但是,如果您不必从源代码构建自己的 GCC 副本,则可以使用 Launchpad 上提供的预构建的 5.4 软件包。

对于 GCC(仅限 C),获取 .deb 文件并按顺序安装它们:

mkdir ~/Downloads/gcc-5.4-deb && cd ~/Downloads/gcc-5.4-deb

wget http://launchpadlibrarian.net/375474546/gcc-5-base_5.4.0-6ubuntu1~16.04.10_amd64.deb
wget http://launchpadlibrarian.net/375474798/libasan2_5.4.0-6ubuntu1~16.04.10_amd64.deb
wget http://launchpadlibrarian.net/375474828/libmpx0_5.4.0-6ubuntu1~16.04.10_amd64.deb
wget http://launchpadlibrarian.net/375474805/libgcc-5-dev_5.4.0-6ubuntu1~16.04.10_amd64.deb
wget http://launchpadlibrarian.net/375474748/cpp-5_5.4.0-6ubuntu1~16.04.10_amd64.deb
wget http://launchpadlibrarian.net/375474755/gcc-5_5.4.0-6ubuntu1~16.04.10_amd64.deb

sudo dpkg -i gcc-5-base_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i libasan2_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i libmpx0_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i libgcc-5-dev_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i cpp-5_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i gcc-5_5.4.0-6ubuntu1~16.04.10_amd64.deb

对于 C++ 支持,添加以下内容:

wget http://launchpadlibrarian.net/375474836/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
wget http://launchpadlibrarian.net/375474834/libstdc++-5-dev_5.4.0-6ubuntu1~16.04.10_amd64.deb
wget http://launchpadlibrarian.net/375474751/g++-5_5.4.0-6ubuntu1~16.04.10_amd64.deb

sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i libstdc++-5-dev_5.4.0-6ubuntu1~16.04.10_amd64.deb
sudo dpkg -i g++-5_5.4.0-6ubuntu1~16.04.10_amd64.deb

请注意,降级libstdc++6可能会导致某些软件包损坏(例如,在我的 Ubuntu 18.10cmakefirefox)。保留多个 libstdc++ 在技术上是可行的,但很难实现,而且肯定不是理想的选择。

答案2

除了 valiano 提到的软件包之外,我还必须安装以下软件包:

wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcilkrts5_5.4.0-6ubuntu1~16.04.10_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libubsan0_5.4.0-6ubuntu1~16.04.10_amd64.deb
wget http://cz.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl15_0.16.1-1_amd64.deb
wget http://cz.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb

答案3

新的 gcc-5 版本记录在:https://launchpad.net/ubuntu/+source/gcc-5

从那里您应该能够单击您需要的版本的其中一个构建,然后在“构建”->“amd64”(或您的架构)下您将找到相应的二进制文件。

您可能只需要下面列出的软件包:

# Taken from the build at https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3807-deletedppa/+build/17785138
wget https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3807-deletedppa/+build/17785138/+files/gcc-5-base_5.4.0-6ubuntu1~16.04.12_amd64.deb
wget https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3807-deletedppa/+build/17785138/+files/libasan2_5.4.0-6ubuntu1~16.04.12_amd64.deb
wget https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3807-deletedppa/+build/17785138/+files/libmpx0_5.4.0-6ubuntu1~16.04.12_amd64.deb
wget https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3807-deletedppa/+build/17785138/+files/libcilkrts5_5.4.0-6ubuntu1~16.04.12_amd64.deb
wget https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3807-deletedppa/+build/17785138/+files/libubsan0_5.4.0-6ubuntu1~16.04.12_amd64.deb
wget https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3807-deletedppa/+build/17785138/+files/libgcc-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb
wget https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3807-deletedppa/+build/17785138/+files/cpp-5_5.4.0-6ubuntu1~16.04.12_amd64.deb
wget https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3807-deletedppa/+build/17785138/+files/gcc-5_5.4.0-6ubuntu1~16.04.12_amd64.deb

# These two are taken from DannyDahan's solution. A newer version from launchpad may have worked aswell
wget http://cz.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl15_0.16.1-1_amd64.deb
wget http://cz.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb


dpkg -i gcc-5-base_5.4.0-6ubuntu1~16.04.12_amd64.deb
dpkg -i libcilkrts5_5.4.0-6ubuntu1~16.04.12_amd64.deb
dpkg -i libubsan0_5.4.0-6ubuntu1~16.04.12_amd64.deb
dpkg -i libmpx0_5.4.0-6ubuntu1~16.04.12_amd64.deb

dpkg -i libisl15_0.16.1-1_amd64.deb
dpkg -i libmpfr4_3.1.4-1_amd64.deb

dpkg -i cpp-5_5.4.0-6ubuntu1~16.04.12_amd64.deb
dpkg -i libasan2_5.4.0-6ubuntu1~16.04.12_amd64.deb
dpkg -i libgcc-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb
dpkg -i gcc-5_5.4.0-6ubuntu1~16.04.12_amd64.deb

答案4

当软件包已经有半 GB 时,解压源时它就是一 GB。

但是--disable-multilib在构建 C/C++ 编译器时 switch 是没有意义的。

错误消息禁用多库意思是:无法构建 32 位程序集,因为缺少 32 位glibc库。我昨天遇到了这个问题,需要安装yum install glibc-devel.i686。在 Ubuntu Linux 上,这应该是apt-get install glibc-dev.i386或可能是libc6-dev-i386。只需手动提供它所依赖的包,或者修复该(可能过时的)./contrib/download_prerequisitesshell 脚本以包含该包。

否则,您最终会得到一个无法构建的编译器x86,而只能构建x86_64

相关内容