Почему заголовок ELF разделяемой библиотеки указывает Linux как OSABI?

Все стандартные разделяемые библиотеки в моей системе Linux (Fedora 9) указывают ELFOSABI_NONE (0) в качестве OSABI.

Это хорошо, однако ямы получили общую библиотеку от поставщика, где OSABI, указанный в заголовке ELF, - ELFOSABI_LINUX (3).

Это незвук как необоснованное значение для разделяемой библиотеки, предназначенной для системы Linux, однако это значение отличается от значения всех моих других библиотек - и поэтому, когда я пытаюсь открыть эту библиотеку с помощью dlopen (), из одной из моих других библиотек это терпит неудачу с ошибкойELF файл OS ABI неверен ".

Я собрал утилиту FreeBSDbrandelf.c и использовал его, чтобы изменить тип OSABI на 0, а теперь библиотекакажется хорошо играть со всем остальным.

Мне просто интересно - как вы думаете, почему эта библиотека помечена как ELFOSABI_LINUX? Я'Могу предположить, что они кросс-скомпилированы в другой системе и указали какой-то флаг gcc, который привел к установке этого значения в заголовке ELF? Я пытался добиться чего-то похожего, но не могопределить соответствующий флаг gcc или флаги.

Хотелось бы узнать, какова вероятная причина, поскольку этот конкретный поставщик ничего не сделает, не взявшись за руки, и яхотелось бы иметь возможность сказать "вы'Возможно, мы делаем X, но это означает, что мы должны изменить ваши библиотеки после их доставки ".

Ответы на вопрос(1)

Ваш ответ на вопрос