Подскажите двоичный файл, где искать библиотеку BUILT - PullRequest
1 голос
/ 07 апреля 2020

У меня есть бинарный файл, для которого требуется glib c -2.18, но самое новое, что я могу получить, используя yum, это 2.17. То, что я хотел бы сделать sh, это протестировать мой двоичный файл только с встроенным glib c -2.18 (не установлен, насколько я знаю, плохая идея делать это вручную). Я прочитал несколько статей о LD_LIBRARY_PATH и о том, как его установить, но большинство из них были либо неполными для меня, либо я получил ошибку, такую ​​как sed: relocation error.

Что касается glib c и того, как я его построил: скачал версию, извлек, сделал папку /build внутри извлеченной папки и из нее запустил ../configure --prefix=/usr. Наконец, в той же папке make.

Может ли кто-нибудь предоставить пошаговые инструкции по запуску моего двоичного файла со встроенной библиотекой?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Вам необходимо связать двоичный файл с -Wl,-rpath, как описано в glib c инструкциях по тестированию . Поэтому, если glib c 2.18 установлен в /opt/gnu/glibc-2.18, вызов компоновщика может выглядеть следующим образом:

gcc -Wl,--dynamic-linker=/opt/gnu/glibc-2.18/lib64/ld-2.18.so \
  -Wl,-rpath=/opt/gnu/glibc-2.18/lib64 -L/opt/gnu/glibc-2.18/lib64
0 голосов
/ 08 апреля 2020

То, что я хотел бы выполнить sh, это протестировать мой бинарный файл только с помощью встроенного glib c -2.18 (не установлено, из того, что я читал, плохая идея делать это вручную).

Это то, что делает GLIB C при запуске make check:

/build/elf/ld.so --library-path /build:/build/elf:/build/math:/build/nptl:... /path/to/binary

Объяснение: запустите ld.so из /build и попросите его загрузить другие части GLIB C из /build и его подкаталогов.

Это работает для большинства программ, но есть определенный класс программ, которые не будут работать при таком вызове. Одним примером в последней категории является программа, которая execve() сама.

...