Необязательные разделяемые библиотеки

Я заметил сбой в приложениях, зависящих от разделяемых библиотек: если вам не хватает какой-то зависимости, приложение завершится ошибкой во время загрузки , даже если пользователь не намерен использовать функциональность зависимости.

Я бы хотел, чтобы мои приложения были лучше. В идеале, вместо того, чтобы распространять до n разных пакетов, где n = numberOfSupportedArchitectures * numberOfSupportedOS * ∏ (для каждой разделяемой библиотеки) (количество альтернатив) Я бы перехватил исключение «ошибка при загрузке разделяемых библиотек», генерируемое во время загрузки, когда обнаруживается, что библиотека, которую я хотел бы, но не нуждалась, отсутствует, а затем продолжал выполнение таким образом, чтобы просто избежать использования неразрешенных ссылок обеспокоенный. Но, очевидно, нет никаких исключений, которых можно поймать. Если чего-то не хватает, все падает еще до запуска main ().

Самое близкое, что я могу получить к контролю над процессом загрузки, - это разрешить все ссылки самостоятельно с помощью dlopen, dlsym и т. Д. Так утомительно. Я ожидал, что для меня уже будет доступна библиотека?

Замечу, что это не будет проблемой ни для дистрибутива на основе исходного кода, ни для Windows. Я собирался поместить бинарные пакеты в теги, но, видимо, у меня нет репутации для тегов монет.

'кажется наиболее элегантным решением было бы улучшить поведение загрузчика / компоновщика ОС.

11
задан mako 24 December 2011 в 03:37
поделиться