Как сделать задержку загрузки общей библиотеки в Linux

Я искал способ сделать общую библиотеку (давайте назовем библиотекуlibbar.so) задержка загружена в Linux, и это, мы надеемся, должно быть реализовано с помощьютолько линкерне изменяя ничего в исходном коде, написанном на C ++; Я имею в виду, я не хочу ссылатьсяdlopen() ниdlsym() в исходном коде родительской библиотеки (назовем ееlibfoo.so) чтобы вызвать функциюlibbar.so потому что они делают исходный код грязным, а процесс обслуживания затруднительным. (Короче говоря, я ожидаю пойти по пути, аналогичному Visual Studio/DELAYLOAD вариант даже на линуксе)

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

Есть лиGNU ld Поддержите ли какой-нибудь механизм загрузки с задержкой в Linux?Если это не так, как насчетлязг?Являетсяdlopen() семья единственный способ задержать загрузку общей библиотеки в Linux?

Я проверил, чтобы пройти-zlazy флаг GCC (g ++) с путем к библиотеке, он, казалось, принял флаг, но поведение не выглядело какlibbar.so задержка загружена (не имеяlibbar.soЯ ожидал исключения при первом вызовеlibbar.so, но исключение фактически возникло до входа вlibfoo.so). С другой стороны, Clang (clang++) оставил предупреждение, что он проигнорировал флаг опции.

С уважением,

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

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