Linux 15.070 Themen, 107.540 Beiträge

GNU Compiler deinstallieren. Wie?

d-oli / 8 Antworten / Baumansicht Nickles

Hallo Leute

Wenn ich ein älteres C++ Programm kompilieren und linken will erscheint folgende Meldung:
#----------------------------------------------------------------------------------------------------------------------
warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
KarstenW d-oli „GNU Compiler deinstallieren. Wie?“
Optionen

Ich benutze SUSE Linux 9.0. Wenn du beide Versionen installierst werden wahrscheinlich irgendwelche Dateien von einer der beiden Versionen überschrieben die den gleichen Dateinamen haben (Die Dateien werden in die gleichen Verzeichnisse installiert !!). Wenn du den neuen C++-Compiler durch den alten C++-Compiler ersetzt , dann wirst du Probleme mit den neuen Programmen bekommen. Die einzige Lösung die mir einfällt ist eine virtuelle Maschine in vmware starten und ein älteres Linux installieren und das Programm in der virtuellen Maschine kompilieren und testen. Oder du passt den Sourcecode an.

Gruß K

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
KarstenW Nachtrag zu: „Ich benutze SUSE Linux 9.0. Wenn du beide Versionen installierst werden...“
Optionen

Mr fällt noch ein das man das Programm beim Kompilieren statisch linken kann. Dann müssen die alten Bibliotheken nicht mehr auf der Festplatte installiert sein, weil der Programmcode der Bibliothen in der binären Datei des Programmes ist. Du könntest dann das Program auch unter deinem neuen Linux ausführen.

Gruß K

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
d-oli KarstenW „Mr fällt noch ein das man das Programm beim Kompilieren statisch linken kann....“
Optionen

Ok - versteh ich das richtig? Ich könnte das Programm mit einer älteren GNU Compiler Version kompilieren und die Bibliotheken statisch dazu linken. Wenn das so funktioniert, kennst Du den entsprechenden Parameter um dies zu tun?

Gruss, d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
KarstenW d-oli „GNU Compiler deinstallieren. Wie?“
Optionen

Ich denke wenn du zwei Versionen unter dem gleichen Linux vom C /C++ Kompiler installierst, werden zwei unterschiedliche Versionen der Laufzeitbibliothek installiert. Dann wird es wohl Probleme beim Kompileren geben. Du könntest eine virtuelle Maschine unter Linux hochfahren und eine ältere Verison von Linux installieren oder auf einer anderen Festplattenpartition eine ältere Version von Linux mit der Kompiler-version 2.95.2 installieren. Beim Kompilieren lässt du die Bibliotheken statisch hinzulinken, so das das Programm uinabhängig ist von den installierten Bibliotheksversionen auf der Festplatte. Dann wird der Programmcode nicht mehr von der Festplatte aus den Bibliotheken zur Laufzeit in das Programm nachgeladen sondern ist schon im Programmcode drinnen und wird gleich beim Programmstart mit geladen.

Der Kommandozeilenparameter ist: -static

Ich habe diese Information aus dem Online-Manual von gcc 2.95.3 von der Homepage des gcc (gcc.gnu.org).
Hier ist ein Link auf Optoinen (2.11 Options for Linking) zum Kompilieren.

http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html#SEC2

Ich hoffe diese Option ist auch noch bei der Version 2.95.2 gültig.

Unter 2.11 sind Optionen für das Linken aufgeführt, unter anderen die Option "-static" um Bibliotheksdateien statisch zum Programm hinzuzulinken. Wenn du den Unterschied zwischen dynamisch und statisch gelinkten Programmen nicht kennst, dann mußt du 'mal deine Programmierkenntnisse ein wenig vertiefen. Ich bin auch kein erfahrener Programmierer, aber ich kann Handbücher lesen ;-).

Gruß K

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
d-oli KarstenW „Ich denke wenn du zwei Versionen unter dem gleichen Linux vom C /C Kompiler...“
Optionen

> Der Kommandozeilenparameter ist: -static
Danke, werde ich probieren.

> Ich habe diese Information aus dem Online-Manual von gcc 2.95.3 von
> der Homepage des gcc (gcc.gnu.org).
> Hier ist ein Link auf Optoinen (2.11 Options for Linking) zum
> Kompilieren
Auch dafür danke.

> Wenn du den Unterschied zwischen dynamisch und statisch gelinkten
> Programmen nicht kennst, dann mußt du 'mal deine
> Programmierkenntnisse ein wenig vertiefen
Statisch und dynamisch sind doch deutsche Worte. Denkst Du es reicht aus bloss über Programmierkenntnisse zu verfügen um diese zu verstehen?


> Ich bin auch kein erfahrener Programmierer, aber ich kann
> Handbücher lesen ;-).
Lesen – was ist das? Ich leider sein Analphabet. Nein im Ernst, ich halte nicht viel von der RTFM Antwort. Obwohl du wenigsten angibst welches Manual.

Wenn alle die Handbücher studieren würden bräuchte es kein www.nickles.de mehr, PC-, Programmier-, Netzwerk- und WasAuchImmerFür- Kurse würden überflüssig und es hätte noch mehr Arbeitslose in Deutschland.

Ich wollte eigentlich nur wissen ob du den Parameter kennst, den Unterschied zwischen „Statisch“ und „Dynamisch“ war mir schon bekannt.

Positives Fazit: Du hast mir weitergeholfen.

Dank und Gruss, d-oli

Lebensweisheit: Ignoriere Fragen in Internetforen die dich nerven;-)

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Klaus_T d-oli „GNU Compiler deinstallieren. Wie?“
Optionen

Du kannst auch 2 Compiler haben, ist allerdings etwas kniffelig. Du musst den gcc-2.95.3 selbst kompilieren und der muss in einem extra-Verzeichnis liegen. Ausserdem muss er eben anders heissen als gcc, also gcc-2.95.3. Das geht so:

Du laedst die die sourcen runter von ftp://ftp.gnu.org/pub/gnu/gcc/

Dann packst du die aus und legst ein neues Verzeichnis an:

mkdir ../gcc-build

Wechsel in das neue Verzeichnis:

cd ../gcc-build

Dann configurierst den so:

../gcc-2.95.3/configure --prefix=/usr/local --enable-languages --enable-languages=c,c++ --enable-threads=posix --enable-version-specific-runtime-libs --program-transform-name="s/\\\\(.*\\\\)/\\\\1-2.95.3/"

Alles in einer Zeile. Dann wird kompiliert:

make bootstrap
make install

ln -s /usr/local/bin/gcc-2.95.3 cc-2.95.3

Dann brauchst du nur immer dein Enviroment anpassen, je nachdem welchen du verwenden willst:
export CC=cc-2.95.3
export CXX=c++-2.95.3

Das war es schon. Du solltest dir aber auch die Doku dazu durchlesen. So klappt es auf jeden Fall bei mir.

Klaus

bei Antwort benachrichtigen
d-oli Klaus_T „Du kannst auch 2 Compiler haben, ist allerdings etwas kniffelig. Du musst den...“
Optionen

cool - werde ich ausprobieren. melde mich ob es funktioniert hat.
dank und gruss
d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
d-oli Nachtrag zu: „GNU Compiler deinstallieren. Wie?“
Optionen

Ja - es funzt. Ich musste das Enviroment programmbedingt etwas anders anpassen, doch das war ein leichtes. Danke für den Tipp und die gute und lückenlose Anweisung.

Gruss, d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen