我目前正在运行Ubuntu 16.04
并且想要gcc-5.3
从源代码安装,而不中断我已经使用 Synaptic 包管理器安装的gcc-5.4
。gcc-4.9
我想要的原因gcc-5.3
是我正在使用CUDA 8.0 RC
,它不支持 之后的 gcc 版本5.3
。我不想降级到 ,而是4.9
想安装 (或至少知道如何安装) 5.3
。我已经有了 的代码gcc-5.3
,只需要完成一些configure/make/make install
步骤。
现在,我需要在运行 make 和 make install 之前了解各种配置选项。我特别想确保安装gcc-5.3
在正确的位置,并且不会干扰我现有的gcc-5.4
和gcc-4.9
。
我找到了一个关于如何配置的说明5.3
,如下:
./gcc-5.3.0/configure --disable-checking --program-suffix=-5.3 --enable-languages=c,c++,go,objc --disable-multilib --with-system-zlib prefix=/usr/local/gcc-5.3
这些选项中有些有意义,有些则没有。具体来说,我认为自己足够了解以免弄乱的选项是:
--disable-checking: Will make the installation quicker, but at the risk
of missing errors. Since I'm paranoid, I'll probably
omit this option.
--disable-multilib: I don't understand this. I gather it has something
to do with variations on the compiler's target machine,
but that's all I can gather.
At worst, if I omit this option, I think I'll just
end up with some extra libraries, which doesn't seem
so bad. Why do/don't I want to use this?
--with-system-zlib: Use the zlib that I already have with my system,
rather than gcc's version. This seems reasonable to
me.
--enable-languages=c,c++,go,objc: AFAIK, I'm really just interested in c & c++,
so this option seems pretty harmless, although I might
just use --enable-lnguages=all, since it can't hurt.
令我担心的选项是:
--program-suffix=-5.3: This seems just to add a -5.3 suffix
at the end of the installation path,
which is probably a good idea if I get the
path right
prefix=/usr/local/gcc-5.3: This just seems to specify the
installation directory and to make the
--program-suffix=-5.3 specification
redundant. However, it is the option that
makes me the most uneasy.
当我执行 a 时find . -name gcc
,我看到的唯一相关路径是/usr/lib/gcc
和/usr/bin/gcc
在 中/usr/lib/gcc
,有两个子目录 -i686-linux-gnu
和x86_64-linux-gnu
,因为我有一台 64 位机器,所以我查看了 x64 目录。
在那里,我看到一个软链接 - 4.9.3
,它链接到一个名为 的目录4.9
,该目录包含 的文件gcc-4.9
。同样,我看到一个名为 的软链接,5.4.0
它链接到一个名为 的目录5
,该目录包含 的文件gcc-5.4
。因此,我期望我想使用prefix=/usr/lib/gcc/5.3
而不是使用该--program-suffix
选项。这样对吗?
此时,我只是假设当我运行 make 和 make install 时,.a
&.so
文件将被放入/usr/lib/gcc/5.3
,并且可执行文件将最终成为,并且我/usr/bin/gcc-5.3
将能够使用 Ubuntu 的 update-alternatives 在 和 之间gcc-5.4
移动gcc-5.3
gcc-4.9
(注意:我不使用 Synaptic 的原因是它只提供了 gcc-5.4,它称之为 gcc-5。同样,ppappa:ubuntu-toolchain-r/test
将所有版本的 gcc-5.X 都称为 gcc-5,这似乎也很危险。我怀疑将所有次要版本的 gcc-5.x 都称为 gcc-5 的决定是我的问题的根源)
答案1
答案2
我最终使用的方法是 Ubuntu 的update-alternatives
。请参阅此链接: