Mailinglist Archive: opensuse-programming-de (108 mails)
| < Previous | Next > |
Re: [opensuse-programming-de] libdbus++ Build
- From: Andre Heine <linux-experience@xxxxxxx>
- Date: Wed, 18 Feb 2009 09:57:01 +0100
- Message-id: <200902180957.01776.linux-experience@xxxxxxx>
Am Dienstag, 17. Februar 2009 18:42 schrieb Philipp Thomas:
Könnt Ihr das da nicht mal richtig stellen:-)
Ja, das habe ich verwechelt mit der API.
Diese habe ich ja als Entwickler verändert. Daher muss ich neukompilieren...
(modifizierte Header, etc ...)
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!?
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...
Das hatte ich bislang immer so angenommen...
Mir ist noch nicht der Zusammenhang zwischen der "Art und Anzahl" der
Parameter und der ABI Version klar.
Weil ich eben bis gestern glaubte, das ich als Entwickler die "Art und Anzahl"
vorgebe... Durch _meine_ definierte API.
Mit der ABI habe ich ja erstmal nichts am Hut...
Ja, genau. Ändert sich die ABI, muss ich neu komplieren. Auch wenn die API
immer noch die selbe ist...
Will so erstmal nicht in meinen Kopf, aber ich arbeite dran:-)
Andre
--
To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-programming-de+help@xxxxxxxxxxxx
* Andre Heine (linux-experience@xxxxxxx) [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!
Könnt Ihr das da nicht mal richtig stellen:-)
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.
Ja, das habe ich verwechelt mit der API.
Diese habe ich ja als Entwickler verändert. Daher muss ich neukompilieren...
(modifizierte Header, etc ...)
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!?
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...
Das hatte ich bislang immer so angenommen...
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?
Mir ist noch nicht der Zusammenhang zwischen der "Art und Anzahl" der
Parameter und der ABI Version klar.
Weil ich eben bis gestern glaubte, das ich als Entwickler die "Art und Anzahl"
vorgebe... Durch _meine_ definierte API.
Mit der ABI habe ich ja erstmal nichts am Hut...
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.
Ja, genau. Ändert sich die ABI, muss ich neu komplieren. Auch wenn die API
immer noch die selbe ist...
Will so erstmal nicht in meinen Kopf, aber ich arbeite dran:-)
Andre
--
To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-programming-de+help@xxxxxxxxxxxx
| < Previous | Next > |