web-dev-qa-db-ja.com

Ubuntu 16.04にgcc-5.3をインストールする方法

私は現在Ubuntu 16.04を実行しており、Synapticパッケージマネージャーを使用して既にインストールしたthegcc-5.3gcc-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.4gcc-4.9に干渉しないようにしたいと思います。

5.3の設定方法の説明が1つ見つかりました。それは次のとおりです。

 ./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. 

find . -name gccを実行すると、関連するパスは/usr/lib/gcc/usr/bin/gccだけです。

/usr/lib/gccには、i686-linux-gnux86_64-linux-gnuの2つのサブディレクトリがあります。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.4gcc-5.3gcc-4.9間を移動する

(注:Synapticを使用しない理由は、gcc-5を提供するgcc-5.4のみを提供するためです。同様に、ppa ppa:ubuntu-toolchain-r/testはgcc-5.Xのすべてのバージョンをgcc-5として参照します。使用するのは危険です。gcc-5が私の問題の原因であるため、gcc-5.xのすべてのマイナーバージョンを参照することにしたと思います。

8
user1245262

最終的に使用したアプローチは、Ubuntuのupdate-alternatives。このリンクを参照してください:

installing-multiple-gcc-versions

0
user1245262

その場合、ソースからgcc = 5.3をインストールする必要はありません。 conda環境(install Miniconda または Anaconda )を使用して、gcc_linux-64 = 5.3をインストールできます。

0
cosmoscalibur