* Andre Heine (linux-experience@gmx.net) [20090217 16:09]:
Hmm, laut Wikipedia ist damit die Hardware Ebene gemeint, nicht unbedingt die API...
Zum einen irrt Wikipedia, zum anderen ist es nicht das API! API ist die Schnittstelle, die sich Dir zum Programmieren (das P in API :) bietet. Wenn diese Schnittstelle in einer kompilierten Bibliothek vorliegt, spricht man vom ABI. Hier *müssen* die Schnittstellen passen, denn es handelt sich letztendlich um Maschienencode. Überleg mal was passiert, wenn sich z.B. die Argumente einer Funktion ändern, also zum Beispiel ein Parameter hinzukommt, das Programm aber eben einen Parameter zu wenig übergibt. Dann wird der der Code der Bibliothek irgendwelchen Müll vom Stack verarbeiten.
Programmierschnittstelle eine Schnittstelle auf Quelltextebene definiert.
Eben :) Auf Quelltextebene, nicht auf Ebene der kompilierten Bibliothek.
die eine binärkompatible Schnittstelle zur Verfügung stellen, ohne dass ein Neukompilieren erforderlich wäre.
Eben deshalb muss eine Änderung des ABI mit der Erhöhung der Hauptversion verbunden sein, damit die Applikation, welche die neue Bibliothek nutzen will neu kompiliert werden muss. So verständlich?
Z.B. gcc 3.3.5 auf gcc 3.4.6 (ABI Version 3 -> ABI Version 4)...
Wie verhält sich das nun genau???
Genau wie ich geschrieben habe. Hier hatte sich dass vom GCC unterstützte ABI geändert. Des müssen alle Bibliotheken und Applikationen mit der gleichen Compiler-Version übersetzt werden, damit sie sich auch verstehen können. Philipp -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org