Ich laufe gerade Ubuntu 16.04und möchte gcc-5.3von der Quelle installieren , ohne das zu stören, gcc-5.4und gcc-4.9das habe ich bereits mit Synaptic Package Manager installiert.
Der Grund, den ich möchte, gcc-5.3ist, dass ich verwende CUDA 8.0 RC, das keine gcc-Versionen mehr unterstützt 5.3. Anstatt ein Downgrade auf durchzuführen 4.9, möchte ich installieren (oder zumindest wissen, wie man installiert) 5.3. Ich habe bereits den Code für gcc-5.3und muss nur das configure/make/make installRitual durchlaufen .
Jetzt muss ich die verschiedenen Konfigurationsoptionen verstehen, bevor ich make and make install ausführen kann. Ich möchte besonders sicher sein, dass ich gcc-5.3am richtigen Ort installiere und meine vorhandenen gcc-5.4und nicht störe gcc-4.9.
Ich habe einen Account zum Konfigurieren gefunden 5.3, der wie folgt war:
./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 die Optionen, von denen ich glaube, dass ich sie gut genug verstehe, um mich nicht durcheinander zu bringen, sind:
--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 a mache find . -name gcc, sind die einzigen relevanten Pfade, die ich sehe, /usr/lib/gccund/usr/bin/gcc
In /usr/lib/gccgibt es zwei Unterverzeichnisse - i686-linux-gnuund x86_64-linux-gnuda ich einen 64-Bit-Computer habe, habe ich im x64-Verzeichnis gesucht.
Dort sah ich einen Softlink - 4.9.3, der mit einem Verzeichnis namens verknüpft 4.9war, für das Dateien vorhanden waren gcc-4.9. In ähnlicher Weise sah ich einen Softlink namens 5.4.0, der mit einem Verzeichnis namens verknüpft 5war, für das Dateien vorhanden waren gcc-5.4. Daher erwarte ich, dass ich prefix=/usr/lib/gcc/5.3die --program-suffixOption verwenden und nicht verwenden möchte . Ist das richtig?
An dieser Stelle gehe ich nur davon aus, dass beim Ausführen von make & make install die .a& .so-Dateien abgelegt werden /usr/lib/gcc/5.3und die ausführbare Datei so endet, /usr/bin/gcc-5.3dass ich Ubuntus Update-Alternativen verwenden kann, um zwischen den Dateien zu wechseln gcc-5.4. gcc-5.3undgcc-4.9
(Hinweis: Der Grund, warum ich Synaptic nicht verwende, ist, dass es nur gcc-5.4 bereitstellt, das als gcc-5 bezeichnet wird. In ähnlicher Weise ppa:ubuntu-toolchain-r/testbezieht sich ppa auf alle Versionen von gcc-5.X als gcc-5, was ebenfalls gefährlich erscheint Ich vermute, dass die Entscheidung, alle Nebenversionen von gcc-5.x als gcc-5 zu bezeichnen, die Wurzel meiner Probleme ist.
ppa:ubuntu-toolchain-r/test. Das kann viel Kopfschmerzen verursachen