Работает ли LD_PRELOAD на всех разновидностях Unix/ Linux?
Я написал простой модуль LD_PRELOAD, скомпилированный на сервере Ubuntu. Будет ли эта предварительная загрузка работать на других системах, таких как Solaris, FreeBSD, CentOS и т. Д. Есть ли какие-либо особые проблемы в некоторых ОС?
1 ответ
LD_PRELOAD
Механизм работает во всех системах ELF (Linux, Solaris и т. д.).
Теоретически, одна и та же библиотека может использоваться в разных операционных системах, если архитектура совпадает (например, библиотека i386 не будет работать в Solaris SPARC), но есть много подводных камней. Например, многие структуры данных, предоставляемые библиотекой C, имеют разные размеры и расположение элементов, и они будут несовместимы между операционными системами, даже если архитектура одинакова.
Если вы очень осторожны в отношении того, какие функции вы вызываете в своем LD_PRELOAD
библиотека, то вы можете создать библиотеку, совместимую с операционными системами. Вам обязательно нужно будет это проверить.