Alle Standardgemeinschaftsbibliotheken auf meinem Linux-System (Fedora 9) geben ELFOSABI_NONE (0) als OSABI an.Warum sollte der ELF-Header einer gemeinsam genutzten Bibliothek Linux als OSABI angeben?
Das ist in Ordnung - aber ich habe eine gemeinsam genutzte Bibliothek von einem Lieferanten erhalten, wo der OSABI in der ELF-Header ELFOSABI_LINUX (3) angegeben ist.
Dies ist nicht Sound wie ein unvernünftiger Wert für eine gemeinsame Bibliothek für ein Linux-System gedacht, aber es ist ein anderer Wert als alle anderen Bibliotheken - und wenn ich versuche, diese Bibliothek zu öffnen, mit dlopen(), aus einer meiner anderen Bibliotheken schlägt dies mit dem Fehler "ELF-Datei OS ABI ungültig" fehl.
ich die FreeBSD-Dienstprogramm brandelf.c kompiliert und verwendet es den OSABI Typ 0 zu ändern und nun die Bibliothek scheint alles andere in Ordnung zu spielen.
Ich frage mich nur - warum denkst du, diese Bibliothek ist als ELFOSABI_LINUX markiert? Ich nehme an, vielleicht kreuzten sie sich kompiliert auf einem anderen System und spezifizierten irgendein gcc Markierungszeichen, das diesen Wert veranlaßte, in den ELF Vorsatz eingestellt zu werden? Ich habe versucht, etwas Ähnliches zu erreichen, konnte aber nicht die passende gcc Flagge oder Flaggen bestimmen.
Ich würde gerne wissen, was die wahrscheinliche Ursache ist, da dieser bestimmte Anbieter nichts tun wird, ohne viel Hand zu halten und ich würde gerne sagen können: "Du machst wahrscheinlich X, aber das heißt, wir haben Ändern Sie Ihre Bibliotheken, nachdem wir sie erhalten haben ".