Изменить местоположение ld-linux

Я выяснил, что для загрузки библиотек сначала открывается исполняемый файл /lib/ld-linux-x86-64.so.2, Все функции загрузки общих библиотек (поиск по многим путям, использование rpath и т. Д.) Будут работать только после ld-linux загружен, потому что это ld-linux который реализует эти функции.

Мне показалось, что ld-linux.so местоположение жестко закодировано в исполняемом файле (вызывая strings мой исполняемый файл подкрепляет эту теорию). Моя проблема в том, что в моем дистрибутиве Linux, компилятор (g ++) устанавливает ld-linux место для /lib/ld-linux-x86-64.so.2, В то время как на Ubuntu (который является более популярным) он расположен на /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2,

Мне было интересно, могу ли я сделать мой исполняемый файл ищет ld-linux.so в /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2(который также присутствует в моем дистрибутиве как символическая ссылка).

3

Решение

Попробуйте добавить -Wl,--dynamic-linker=/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 на ваш LDFLAGS,

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]