Ich verwende derzeit Ubuntu 16.04 und gcc-5.3 installieren möchten aus der Quelle, ohne gcc-5.4 zu stören und gcc-4.9 die ich bereits mit dem Synaptic-Paketmanager installiert habe.
Der Grund, warum ich gcc-5.3 möchte verwende ich CUDA 8.0 RC , das gcc-Versionen nach 5.3 nicht unterstützt . Anstatt auf 4.9 herunterzustufen , ich möchte 5.3 installieren (oder zumindest wissen, wie es installiert wird). . Ich habe bereits den Code für gcc-5.3 und müssen nur durch configure/make/make install gehen Ritual.
Jetzt muss ich die verschiedenen Konfigurationsoptionen verstehen, bevor ich make und make install ausführe. Ich möchte besonders sicher sein, dass ich gcc-5.3 installiere an der richtigen Stelle und stört nicht mein vorhandenes gcc-5.4 und gcc-4.9 .
Ich habe ein Konto gefunden, wie 5.3 konfiguriert wird , das war wie folgt:
./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
Einige dieser Optionen sind sinnvoll, andere nicht. Insbesondere sind die Optionen, von denen ich glaube, dass ich sie gut genug verstehe, um mich nicht zu vermasseln, folgende:
--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.
Die Optionen, die mich beunruhigen, sind:
--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.
Wenn ich einen find . -name gcc , die einzigen relevanten Pfade, die ich sehe, sind /usr/lib/gcc und /usr/bin/gcc
In /usr/lib/gcc , gibt es zwei Unterverzeichnisse – i686-linux-gnu und x86_64-linux-gnu , da ich einen 64-Bit-Rechner habe, habe ich im x64-Verzeichnis nachgesehen.
Dort sah ich einen Softlink – 4.9.3 , die mit einem Verzeichnis namens 4.9 verknüpft ist , die Dateien für gcc-4.9 enthielt . Ebenso sah ich einen Softlink namens 5.4.0 die mit einem Verzeichnis namens 5 verknüpft ist , die Dateien für gcc-5.4 enthielt . Also erwarte ich, dass ich prefix=/usr/lib/gcc/5.3 verwenden möchte und verwenden Sie nicht das --program-suffix Möglichkeit. Ist das richtig?
An dieser Stelle gehe ich einfach davon aus, dass beim Ausführen von make &make install die .a &.so Dateien werden in /usr/lib/gcc/5.3 abgelegt und dass die ausführbare Datei als /usr/bin/gcc-5.3 endet und dass ich die Update-Alternativen von Ubuntu verwenden kann, um zwischen gcc-5.4 zu wechseln , gcc-5.3 und gcc-4.9
(Hinweis:Der Grund, warum ich Synaptic nicht verwende, ist, dass es nur gcc-5.4 bereitstellt, das es gcc-5 nennt. Ebenso ppa ppa:ubuntu-toolchain-r/test bezieht sich auf alle Versionen von gcc-5.X als gcc-5, was auch gefährlich zu sein scheint. Ich vermute, dass die Entscheidung, alle Nebenversionen von gcc-5.x als gcc-5 zu bezeichnen, die Wurzel meiner Probleme ist)
Akzeptierte Antwort:
In diesem Fall müssen Sie gcc=5.3 nicht aus der Quelle installieren. Sie können eine Conda-Umgebung verwenden (Miniconda oder Anaconda installieren) und gcc_linux-64=5.3 installieren.