Установка LD_LIBRARY_PATH перед запуском приложения из терминала не имеет никакого эффекта

У меня есть несколько сборок приложения в моей системе (сборка dev и много более старых выпущенных сборок). Когда я пытаюсь запустить более раннюю версию, система неизменно выбирает динамические библиотеки из сборки dev.

Из /home/franz/Projects/appleseed/archives/releases/1.1.0-alpha-14-0-g4e46ed9/appleseed/bin, который является каталогом более ранней версии, которую я пытаюсь запустить:

$ ldd appleseed.studio 
    [stuff omitted]
libappleseed.so => /home/franz/Projects/appleseed/build/linux-gcc4/appleseed/libappleseed.so (0x00007fbcb090b000)
libappleseed.shared.so => /home/franz/Projects/appleseed/build/linux-gcc4/appleseed.shared/libappleseed.shared.so (0x00007fbcb030c000)
    [more stuff omitted]

(/home/franz/Projects/appleseed/build/linux-gcc4/appleseed/ - это путь к моей сборке dev.)

Естественно, я должен правильно установить LD_LIBRARY_PATH перед запуском более ранней версии:

$ export LD_LIBRARY_PATH=/home/franz/Projects/appleseed/archives/releases/1.1.0-alpha-14-0-g4e46ed9/appleseed/bin ; ./appleseed.studio

(LD_LIBRARY_PATH изначально пуст, поэтому я не беспокоюсь о конкатенации.)

Однако это не ' и система продолжает собирать динамическую библиотеку dev.

1112 Я что-то не так делаю? Есть идеи?

Я использую 64-битную сборку Ubuntu 10.10 Maverick Meerkat (по состоянию на апрель 2012 года не поддерживается).

ОБНОВЛЕНИЕ: я обновил свою систему до Ubuntu 11.10 (Natty), и проблема сохраняется.

4
задан 14 September 2012 в 13:21

2 ответа

  1. Убедитесь, что в разделе

    /home/franz/Projects/appleseed/archives/releases/1.1.0-alpha-14-0-g4e46ed9/appleseed/bin
    

    у вас действительно есть общие библиотеки, которые вы хотите загрузить. Они действительно находятся в каталоге bin/ архива? Не lib/?

  2. Попробуйте

    /lib/ld-linux.so.2 --library-path /home/franz/Projects/appleseed/archives/releases/1.1.0-alpha-14-0-g4e46ed9/appleseed/bin ./appleseed.studio
    

    Вы можете использовать опции из этой программы для управления и отладки процесса загрузки библиотеки.

0
ответ дан 14 September 2012 в 13:21

Для 64 битов/usr/bin/ld-> x86_64-linux-gnu-ld является загрузчиком, не 32 бита/lib/ld-linux.so.2-> i386-linux-gnu/ld-2.27.so. Загрузчик номера 32 битов необходим для этого.

команда ldd указывает, что общие библиотеки, которыми она пользуется, находятся в.../appleseed и.../appleseed.shared. Добавление нового места для необходимых библиотек (.../мусорное ведро) не изменит это, ни возьмет библиотеки в.../мусорное ведро. Вопрос, который остается, состоит в том, как ldd берет эти библиотеки, если они не находятся в стандартном месте, ни в LD_LIBRARY_PATH. Я начал бы работу, как исполняемый файл был связан, Вы, возможно, дали полный путь на необходимых библиотеках и не полагаетесь просто на имя, нуждаясь в ряде мест для сканирования, какой LD_LIBRARY_PATH обеспечил бы.

0
ответ дан 21 October 2019 в 10:07

Другие вопросы по тегам:

Похожие вопросы: