1

все, я установил пакет 'vowpal wabbit' и также использую 'make test', чтобы проверить его. Это показывает, что все в порядке. Однако, когда я ввожу 'vw' в терминале, он имеет следующие ошибки:

vw: error while loading shared libraries: libvw.so.0: cannot open shared object file: No such file or directory

Моя система Ubuntu12.04-64bit. Может кто-нибудь сказать мне, как решить эту проблему? Спасибо

2 ответа2

5

Из сообщений и обратно, похоже, у вас установлена библиотека в /usr /local /lib. Но ваше приложение не знает, где искать библиотеку.

Вы можете решить это несколькими способами.

  1. Вы можете задать особые флаги при настройке / сборке вашего проекта, чтобы сообщить бинарному файлу о регистрации в / usr / local / lib. Если вы знаете, как устанавливать флаги при сборке, вы должны установить LDFLAGS=-Wl,-rpath,/usr/local/lib . Это заставит вас восстановить хотя.

  2. Средство компоновки во время выполнения просматривает переменную среды с именем LD_LIBRARY_PATH чтобы увидеть, какие каталоги проверять при поиске общих библиотек. В этом случае, если вы export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib и затем запустите свою программу, она должна работать.

  3. Если у вас есть несколько программ, которым нужен каталог / usr / local / lib, и вы чувствуете, что это безопасно для всех, вы можете настроить компоновщик времени выполнения на / usr / local / lib каждый раз. Вы можете удалить файл в /etc/ld.so.conf.d или отредактировать /etc/ld.so.conf для добавления / usr / local / lib. Это повлияет на каждый исполняемый файл в вашей системе, поэтому я считаю его довольно продвинутым.

Короче говоря, вы должны рассказать своей программе, как найти библиотеку. Самым простым на данный момент является установка LD_LIBRARY_PATH с export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

0

Обновление: я настраивал "Quagga" из исходного кода. После установки, когда я запустил его, я получил сообщение об ошибке «не могу открыть общий объектный файл: нет такого файла или каталога». В моем случае это был файл libzebra.so.0.

Я использовал метод "экспорта", предложенный Ричем в комментарии выше.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/foobar/lib

Где "/opt/foobar/lib" - это папка общей библиотеки вашего приложения. Для меня это был "/usr/local/lib/"

Тем не менее, это не решило мою проблему. Затем, чтобы обновить кеш разделяемой библиотеки, мне пришлось выполнить ldconfig чтобы перестроить кеш разделяемой библиотеки. Я нашел предложение из этого поста на Github. Вы также можете прочитать подробности из инструкции по добавлению библиотеки-каталогов-рассказу-конфигурации-кэша.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .