Dlaczego nagłówek ELF biblioteki współdzielonej określał Linux jako OSABI?

Wszystkie standardowe biblioteki współdzielone w moim systemie Linux (Fedora 9) określają ELFOSABI_NONE (0) jako swoje OSABI.

To jest w porządku - jednak otrzymałem wspólną bibliotekę od dostawcy, gdzie OSABI podany w nagłówku ELF to ELFOSABI_LINUX (3).

Tak nie jestdźwięk jak nieuzasadniona wartość dla współdzielonej biblioteki przeznaczonej dla systemu Linux, jednak jest to inna wartość niż dla wszystkich moich innych bibliotek - i tak, gdy próbuję otworzyć tę bibliotekę, za pomocą dlopen (), z jednej z moich innych bibliotek to kończy się niepowodzeniem z błędem „Plik ELF OS ABI nieprawidłowy”.

Skompilowałem narzędzie FreeBSDbrandelf.c i użył go do zmiany typu OSABI na 0, a teraz na bibliotekęwydaje się grać dobrze ze wszystkim innym.

Zastanawiam się tylko - dlaczego uważasz, że ta biblioteka jest oznaczona jako ELFOSABI_LINUX? Zgaduję, że może skompilowali się w innym systemie i podali jakąś flagę gcc, która spowodowała ustawienie tej wartości w nagłówku ELF? Próbowałem osiągnąć coś podobnego, ale nie mogłem określić odpowiedniej flagi lub flag gcc.

Chciałbym wiedzieć, jaka jest prawdopodobna przyczyna, ponieważ ten konkretny dostawca nie zrobi niczego bez dużego trzymania ręki i chciałbym móc powiedzieć „prawdopodobnie robisz X, ale to oznacza, że ​​musimy zmodyfikować twoje biblioteki po odebraniu ich ”.

questionAnswers(1)

yourAnswerToTheQuestion