Releng_6 überraschende Erkenntnisse

Kamikaze

Warrior of Sunlight
Staff member
Wie einige villeicht mitgekriegt haben, habe ich mich dem Steckenpferd CFLAGS verschrieben. Bevor ich meine CFLAGS ändere versuche ich auch immer erstmal einen Durchgang mit einem anderen Compiler.

Unter 5.4 habe ich meine Ports mit gcc41 gebaut, wenn das nicht funktioniert hat, habe ich auf den Compiler aus dem Basisystem gewechselt. Das war in 90% der Fälle die Lösung. Sonst musste ich noch an den CFLAGS schrauben.

Bei 6.0 habe ich nun eine seltsame Beobachtung gemacht. Viele der Ports die unter 5.4 nur mit dem gcc aus der Basis funktioniert haben scheitern plötzlich. Wenn ich jedoch versuche sie mit dem gcc41 zu bauen klappt es problemlos.:confused:

Irgendwie seltsam.
 
da ich sie von anfang an mit dem gcc41 gebaut habe ist mir das garnicht aufgefallen :D
also ich hatte noch kein paket aus dem ports das ich nicht mit gcc41 kompilieren könnte. und selbtsam finde ich diesen fortschritt auch nicht, eher erfreulich :D
 
Seltsam ist es das es mit den Compiler aus dem Basissystem nicht geht. Es geht aber auch umgekert, zum Beispiel kann ich im Moment x11-toolkits/wxgtk26 nicht mit dem gcc41 bauen.
 
also auch wenn ich jetzt schläge krieg:
stabil genug um in ein paar linux distris unterzukommen ;) (ok das muss nix heißen).
für current also auf jeden fall interessant.
 
Woran scheitert es denn eigentlich? Bist du dir dessen bewusst, dass du bei jedem Compilerwechsel libtool gezwungenermaßen mit dem neuen Compiler neubauen musst?

Gruß Björn
 
Björn König said:
Woran scheitert es denn eigentlich? Bist du dir dessen bewusst, dass du bei jedem Compilerwechsel libtool gezwungenermaßen mit dem neuen Compiler neubauen musst?

Gruß Björn
Mal ein brauchbarer Hinweis, danke , ich mümmele schon seit Stunden vor mir her und überlege, warum sich alle möglichen Sachen nciht bauen lassen.
 
Neben libtool kannst du auch C++ Code nicht zwischen versch. Compilern verwenden (ja, nichtmal innerhalb der GCC-Linie, findet ihr C++ nicht auch toll??)

Also wenn ein Lib mit gcc4 gebaut wird, und dann ne Anwendung mit gcc3 dagegen linken will gibts aerger. Aber du hast uns ja die konkreten Fehlermeldungen geschickt vorenthalten :)
 
die packages werden mit dem base-internen gcc kompiliert, oder? und ich darf die compiler nie mischen?
also wenn es dann irgendwann die gcj-pakete von ooo gibt, kann die nur verwenden wenn alles andere auch mit gcc4.1 gebaut wurde? das kann ja wohl nicht sein, odeR?
die linux distris koennen ja auch vorkompilierte pakete von unterschiedlichen compilern verwenden...
 
MrFixit hat geschrieben, daß du nicht eine Lib mit gcc4 bauen und dann erwarten kannst, daß das mit gcc3 kompilierte Programm dagegen gelinkt werden kann. Andersrum wird es wohl in der Regel gehen weil der gcc4 wahrscheinlich abwärtskompatibel, der gcc3 aber sicher nicht aufwärtskompatibel ist.
 
soul_rebel said:
die packages werden mit dem base-internen gcc kompiliert, oder? und ich darf die compiler nie mischen?
also wenn es dann irgendwann die gcj-pakete von ooo gibt, kann die nur verwenden wenn alles andere auch mit gcc4.1 gebaut wurde? das kann ja wohl nicht sein, odeR?
die linux distris koennen ja auch vorkompilierte pakete von unterschiedlichen compilern verwenden...
Das man libtool beim Compilerwechsel neu bauen muss stimmt, (aber nicht immer) und manchmal muss man libtool auch so neu bauen (ohne Wechsel). Was nicht stimmt ist das libs die mit gcc3 gebaut wurden nicht mit gcc4 verlinkt werden können oder umgekehrt. Mein System ist eine bunte Mischung und es gibt da keine Probleme.
 
Das liegt dann an libtool. Es spielt dabei keine rolle womit die lib gebaut wurde, nur womit das Programm das verlinkt wird gebaut wird.
 
.mp said:
MrFixit hat geschrieben, daß du nicht eine Lib mit gcc4 bauen und dann erwarten kannst, daß das mit gcc3 kompilierte Programm dagegen gelinkt werden kann.
Es war vielleicht nicht ganz klar, aber das gilt nur fuer C++ Programme/Libs und hat mit dem Namemangling zu tun. Wenn die GCC Leute das nicht bei jeder neuen Version anders machen wuerden ... grrrr
Andersrum wird es wohl in der Regel gehen weil der gcc4 wahrscheinlich abwärtskompatibel, der gcc3 aber sicher nicht aufwärtskompatibel ist.
Nein, auch das kannste beim Namemangling knicken, hier faellt ja der Linker ld(1) auf die Schnauze, weil er Symbol mit unterschiedlichem Namen verlinken muesste.

Ich wiederhole: Betrifft nur C++ und damit wohl am ehesten QT + KDE, es gibt ja zum Glueck nicht allzuviele Bibliotheken in C++.
 
Back
Top