Re: Kompilieren und linken eines _einzigen_ Binary von suse 8.2 bis 10.2?

Andre Heine <[email protected]>
Newsgroups gmane.linux.suse.programming
Organization none
Message-ID <[email protected]>
Moin moin,

Am Montag, 21. Juli 2008 14:05 schrieben Sie:
> da ich gerade die gleichen Probleme habe, ein Kurzkommentar meinerseits.
>
> > Woran erkennt man, ob eine Library abwärtskompatibel ist?
> >
> > Habe gelesen, das man z.B. ein Programm, dass gegen die libstdc++.so.
> > 6.0.3
> > kompiliert und gelinkt wurde auch auf einem System laufen lassen kann
> > wo z.B. die Version 6.0.8 vorhanden ist. (ABI kompatibel).
> >
> > Version 6.1 z.B. würde schon nicht mehr funktionieren...
>
> Bin ich eigentlich der Einzige, der die nichtvorhandene
> Binärkompatibilität nicht nur ärgerlich, sondern als katastrophal
> empfindet?


Stimmt schon, aber ist kein reines Linux Problem. Eher ein Problem 
von "Standards"...

Siehe auch hier:

http://de.wikipedia.org/wiki/Bin%C3%A4rschnittstelle

Wobei es nicht gesichert ist, ob die Sprünge der ABI Versionen von 3.2 auf 
3.4 erfolgte. Auf einer andere Liste (gentoo) sind alle irgendwie der Meinung
das der Sprung von 3.3 auf 3.4 erfolgte.

Diesem Artikel nach sollte es keine Problem sein, mit dem GCC 3.4.6 binaries 
zu erzeugen, die man später auf ein System (das z.B. mit dem GCC 4.X 
kompiliert worden ist) laufen lassen könnte.

(libstdc++.so wird ja dynamisch gelinkt)

Ja, klappt auch irgendwie. Nur eben nicht immer?!

Ich vermisse lediglich eine Information welche Version mit einer anderen 
funtioniert und was eben nicht geht. Diese Information gibt es bestimmt bei 
gcc.gnu.org. Leider habe ich sie noch nicht gefunden...

Ein weiteres Problem mit unserem Projekt ist, dass wir hier ein OpenOffice 
Paket (inkl. SDK) von openoffice.org benutzen (warum?? Keine Ahnung).
Da liegt nochmal einen andere libstdc++ bei. Jetzt muss ich irgendwie mit 
_drei_ unterschiedlichen "libstdc++" Versionen umgehen (und das nur auf 10.2)

libstdc++.so.6.0.3    # gcc 3.4.6
libstdc++.so.6.0.8    # gcc 4.1.2
libstdc++so.6.1        # gcc unknown

> Was sind Versionsnummern wert, wenn Bibliotheken schon imkompatibel
> werden, wenn sich die 2., 3. oder gar 4. Stelle in der Versionsnummer
> ändert? Sollen doch wieder alle Linuxnutzer ihre Systeme komplett
> selbst kompilieren?
> Hat sich schon mal jemand ernsthaft gefragt, warum 
> sich Linux auf dem Desktop nicht durchsetzen kann?

Hmm. Der Benutzer bekommt ja eigentlich nichts davon mit. der Distributor 
erstellt ja alle Pakete und so hat er ja erstmal immer zusammenpassende 
Versionen. Erst, wenn der User anfängt rumzufuschen uznd z.B. 9.3 Pakete mit 
einer 10.3 mischen will.

Das Problem ist eigentlich nur ärgerlich für Software Hersteller;-)
Und da eigentlich auch nur, wenn man sich um diesen "Versions-Kram" 
keine Gedanken macht.

Es funktioniert noch einfach zuviel mit diesem "gemische".

Mein Problem ist eigentlich nur eines: Wie bringe ich meinen Chef dazu, das er 
erkennt das wir schlicht korrekt erstellte Pakete auszuliefern müssen.
(Ohne Hickhack, sondern für für jede Distri ein Paket. Alles andere ist IMHO 
SUCKS)

Dieses Problem lässt sich ja ganz elegant umschiffen, man könnte ja den 
Buildservice benutzen.
Damit hatten wir schonmal in meiner alten Firma gearbeitet. Du musst
dann lediglich deinen Code sauber halten...

Dieses Problem ist selbst unter W2K da, da haben wir gerade genauso Probleme. 
(Umstieg vc++6 auf .Net Version 9 dreck).
Auch hier ist es die c++ runtime, massive Problem mit std::string...

Eigentlich alles egal mit den Versionen, wenn man diese Fallstricke beachtet. 
Nur man muss sie eben beachten;()

Man fängt nur an zu straucheln, wenn vorher schon alles denkbare falsch bzw. 
schief gelaufen ist.


Viele Grüsse

Andre
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.