Am Wed, 18 Feb 2009 09:57:01 +0100 schriebst Du:
Jetzt habe ich vermutet, dass die ABI Version durch den Compiler vorgegeben wird. Damit meine ich, das jetzt der gcc3.3.5 die ABI Version "3" erzeugt, also das Binaryformat (ELF?) die ABI Version "3" hat.
Das vertausche ich eventuell!?
Nein, hier ist von C++ die Rede und da sehen die Sachen noch etwas andwers aus. Bei C++ gehören auch solche Dinge wie die Kodierung von Parametern im Namen der Funktion (das sog. name mangling) zum ABI, eben zum C++ ABI. Ausserdem gibt es dann noch Plattformspezifische ABIs wie z.B: das für x86_64. In solchen ABI werden so Dinge festgelegt wie in welchen Registern welche Form von Daten übergeben werden, ob überhaupt in Registern oder dem Stack und so weiter.
Würde ich den selben Quellcode mit dem gcc 4.2 compilieren, wäre die API meiner Library immer noch gleich. An den Parametern hat sich nichts verändert, trotzdem stimmt aber die ABI Version nicht und muss neu kompilieren...
Ja, wegen des C++ ABIs.
Mit der ABI habe ich ja erstmal nichts am Hut...
Es gibt halt viele Formen von ABI :) Auf die Schnittstelle Deiner Bibliothek hast Du noch Einfluss, aber eben nicht z.B. auf das name mangling des C++ Compilers.
Will so erstmal nicht in meinen Kopf, aber ich arbeite dran:-)
Habe ich mich jetzt verständlicher ausgedrückt? Philipp -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org