Re: Waas ist ein ABI
Philipp Thomas <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
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