Работает ли LD_PRELOAD на всех разновидностях Unix/ Linux?

Я написал простой модуль LD_PRELOAD, скомпилированный на сервере Ubuntu. Будет ли эта предварительная загрузка работать на других системах, таких как Solaris, FreeBSD, CentOS и т. Д. Есть ли какие-либо особые проблемы в некоторых ОС?

1 ответ

Решение

LD_PRELOAD Механизм работает во всех системах ELF (Linux, Solaris и т. д.).

Теоретически, одна и та же библиотека может использоваться в разных операционных системах, если архитектура совпадает (например, библиотека i386 не будет работать в Solaris SPARC), но есть много подводных камней. Например, многие структуры данных, предоставляемые библиотекой C, имеют разные размеры и расположение элементов, и они будут несовместимы между операционными системами, даже если архитектура одинакова.

Если вы очень осторожны в отношении того, какие функции вы вызываете в своем LD_PRELOAD библиотека, то вы можете создать библиотеку, совместимую с операционными системами. Вам обязательно нужно будет это проверить.

Другие вопросы по тегам