Есть ли способ заставить двоичный файл Linux ELF иметь дополнительную зависимость от общей библиотеки без dlopen()?Linux

Anonymous
Есть ли способ заставить двоичный файл Linux ELF иметь дополнительную зависимость от общей библиотеки без dlopen()?

Сообщение Anonymous »

У меня есть приложение, которое хочет использовать общую библиотеку (

Код: Выделить всё

libwayland-client.so
), если он доступен, но его необходимо запустить, даже если он недоступен. Обычный способ реализовать это — использовать dlopen() и dlsym() для чтения общей библиотеки вручную, но это требует написания большого количества связующего кода и не позволяет мне напрямую использовать заголовки разработки. Есть ли способ пометить зависимость общей библиотеки как необязательную в двоичном файле ELF так, чтобы ее мог понять загрузчик ELF?
Обратите внимание, что это отличается от маркировки символа из общей библиотеки. как необязательный (это можно сделать, пометив его как слабый символ). Я спрашиваю о том, как сделать слабой зависимость всей библиотеки.
Обратите также внимание, что речь идет не о зависимостях во время сборки - меня устраивает зависимость от общей библиотеки во время сборки. , но я не хочу заставлять своих пользователей иметь эту общую библиотеку на своих машинах.
(В моей конкретной ситуации я хочу, чтобы мое приложение поддерживало и X11, и Wayland, но должным образом поддерживать Wayland, ему нужно сделать несколько звонков, чтобы libwayland-client.so Однако я хочу избежать отправки отдельного двоичного файла для чистых пользователей X11.)

Подробнее здесь: https://stackoverflow.com/questions/792 ... brary-depe

Вернуться в «Linux»