私は現在Ubuntu 16.04
を実行しており、Synapticパッケージマネージャーを使用して既にインストールしたthegcc-5.3
と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
の設定方法の説明が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-gnu
とx86_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.4
、gcc-5.3
、gcc-4.9
間を移動する
(注:Synapticを使用しない理由は、gcc-5を提供するgcc-5.4のみを提供するためです。同様に、ppa ppa:ubuntu-toolchain-r/test
はgcc-5.Xのすべてのバージョンをgcc-5として参照します。使用するのは危険です。gcc-5が私の問題の原因であるため、gcc-5.xのすべてのマイナーバージョンを参照することにしたと思います。
最終的に使用したアプローチは、Ubuntuのupdate-alternatives
。このリンクを参照してください: