[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: C++ ABI wirklich so problematisch?



On 19.09.05 22:39:09, Eduard Bloch wrote:
> Andreas Pakulat schrieb am Sonntag, den 18. September 2005:
> > > Dann würde ich mal pauschal sagen: Glück. Vielleicht sind die meisten 
> > > Funktionen in C gecoded, und du hast den C++ Teil noch nicht benutzt. 
> > > Ist zwar sehr unwahrscheinlich, aber das hat Glück so an sich.
> > 
> > Guck nochmal an den Anfang des Threads: Es ging um KDE und kdevelop. Da
> > ist nahezu _gar kein_ C-Code drin.
> 
> Darf ich das in meine Signatur-Sammlung eintragen?

Gerne, wenn du das so lustig findest...

> Sorry, diese Aussage ist genauso unsinnig wie "Mein Auto hat eine
> Automatik aber _gar kein_ Getriebe".

Den Vergleich verstehe ich nicht ganz, aber das dürfte daran liegen dass
ich die Falschheit meiner Aussage nicht verstehe...

> Lass mal ein "objdump -x" auf deine kompilierte Binary und prüfe, ob da
> libstdc++5 gelinkt wird.

andreas@morpheus:~/kdevelop3.2.0/bin>objdump -x kdevelop | grep libstd
  NEEDED      libstdc++.so.6
  required from libstdc++.so.6:

Und mit gcc-3.3 kompiliert wäre da ein .so.5 gewesen.

> Wenn dort kein STL-Code verwendet wurde und das
> Programm z.B. mit lsupc++ gelinkt worden war,

Was ist lsupc++? Oder meinst du -lsupc++ als Option an g++ bzw. libtool
übergeben.

> dann wird es wohl auch keine libstdc++-Konflikte geben und mit etwas
> Glück läuft das Programm auch so.

Selbst wenn kdevelop nicht gegen libstdc++ gelinkt wäre, so wäre es
dennoch gegen libkdeui, libkdecore usw. gelinkt. Da g++ eine ABI
Änderung zwischen 3.3 und 4.0  erfahren hat, dürfte ein Programm welches
mit 3.3 kompiliert wurde und gegen libs die mit 3.3 kompiliert wurden
gelinkt ist, nicht mit libs die mit 4.0 kompiliert wurden funktionieren.
So jedenfalls ist mein Verständnis der Dinge. Das wiederum ist bei
meinem kdevelop nicht der Fall gewesen, sprich ich hab das Upgrade von
KDE durchgeführt, wobei libkdecore, libkdeui usw. mit g++-4.0
kompilierten Versionen ausgetauscht wurden. Dann hatte ich noch einen
Neustart (es waren also auch keine alten Libs mehr im Speicher) und habe
dann kdevelop gestartet und es lief.

Andreas

-- 
Be different: conform.



Reply to: