LINUX.ORG.RU

Как правильно использовать LD_LIBRARY_PATH?

 , ,


0

1

Решил на выходных повтыкать в одну игру с gog, а там в start.sh есть такой кусок:

# Actions
run_game() {
 echo "Running ${GAME_NAME}"
 export LD_LIBRARY_PATH="$CURRENT_DIR/game:$CURRENT_DIR/lib"
 local bin_name="SPAZ"
 cd game
 ./$bin_name
}
в таком виде при запуске этого скрипта я получаю:
Alert: Error Unable to initialize OpenGL.  (Error: Failed loading libGL.so.1)
Exiting
но если закоментить
export LD_LIBRARY_PATH="$CURRENT_DIR/game:$CURRENT_DIR/lib"
то игра стартует. Но тут мне стало просто интересно, что это за переменная такая, зачем её тут вставили и почему у меня она не работает\работает не так как надо. Смотрел тут пишут, что эту переменную лучше использовать только для дебага. Посмотрел у меня она по-умолчанию пуста. Попробовал прописывать разные пути, не вышло. В общем сам разобраться что к чему не смог, потому пришёл спросить здесь. На всякий случай дистр — gentoo.

просто у тебя есть эти нужные библиотеки, а в указанной директории нет

Deleted
()

Похоже, что LD_LIBRARY_PATH уже содержит какие-то пути, в т.ч. к libGL.so.1, но этот скрипт вместо того, чтобы добавить к ним свои, затирает их.

gentoo_root ★★★★★
()
Ответ на: комментарий от Deleted

Очень просто, в переменной лежало одно значение, а export в скрипте положил новое вместо старого. Правильно было бы добавить в начало:

export LD_LIBRARY_PATH="$CURRENT_DIR/game:$CURRENT_DIR/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

никогда так не делал и всё работало. просто, скорее всего, там и ./$bin_name тоже какой-то скрипт.

Deleted
()
Ответ на: комментарий от Deleted

просто у тебя есть эти нужные библиотеки, а в указанной директории нет

Наоборот. В указанной директории есть какие-то библиотеки, с которыми игра не работает.

EXL ★★★★★
()
Ответ на: комментарий от Deleted

Это же очень легко выяснить. Если ОП напишет в консоли echo $LD_LIBRARY_PATH, и там не пусто, и в одном из этих каталогов есть libGL.so.1, то игра не нашла libGL из-за того, что скрипт изменил значение LD_LIBRARY_PATH, стерев те пути, которые там были.

Запускается игра и при отсутствии export LD_LIBRARY_PATH в скрипте, скорее всего, из-за того, что нужные библиотеки (которые лежали в game и lib) есть и в системных каталогах.

gentoo_root ★★★★★
()

На правах мэйнтэйнера: чем не устроил games-strategy/spaz ?

Или там версия старая?

Update: пардон, почудилось что ты задавал вопрос про humble bundle версию, а не про gog.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от gentoo_root

Заменил на Вашу строку, не работает.

flyshoot
() автор топика
Ответ на: комментарий от Deleted

Судя по

 local bin_name="SPAZ"
 cd game
 ./$bin_name
это файл game/SPAZ, а это бинарник

flyshoot
() автор топика
Ответ на: комментарий от Pinkbyte

Я прошёл по сайту, указанному в пакете, но не раскрыл до конца связь games-strategy/spaz и humble bundle, дайте, пожалуйста, больше информации, как связан пакет и версия humble bundle?

flyshoot
() автор топика
Ответ на: комментарий от flyshoot

дайте, пожалуйста, больше информации, как связан пакет и версия humble bundle?

Для установки пакета требуются бинарники с humble bundle, иначе чексумма не сойдется

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.