Приложение пытается использовать неверную общую библиотеку

У меня проблема с программой (quartus), работающей на моей машине с Ubuntu. Я получаю следующую ошибку.

quartus: symbol lookup error: /usr/lib/i386-linux-gnu/libXi.so: undefined symbol: XESetWireToEventCookie

У меня есть правильный файл libXi.so.6.0.0, но независимо от того, куда я его положил, ОС не будет его использовать, пока я не apt-get remove libxi-dev, но многие программы используют это libXi. То, что я хочу сделать, это добавить какое-то исключение к динамическому компоновщику, чтобы quartus использовал libXi., Так что ему нужно, а все остальное все еще использует тот, что в /usr/lib/i386-linux-gnu.

Спасибо!

0
задан 11 October 2012 в 18:02

1 ответ

Необходимо смочь создать обертку сценария оболочки, как детализировано в этой статье, и использовать LD_LIBRARY_PATH прием, так, чтобы можно было запустить программу и удостовериться, что это - единственная программа для пользований другой общей библиотекой. Не вставляйте его Ваш .bashrc, поскольку Вы только хотите, чтобы это временно установило переменную окружения. Запуск Вашей программы с этой оберткой сценария оболочки является, вероятно, самым легким способом иметь дело с этими видами проблем, чтобы сделать с конфликтующими общими библиотеками.

#!/bin/bash
export LD_LIBRARY_PATH="/path/to/lib/:$LD_LIBRARY_PATH"
/path/to/my/program

Вторая строка сценария устанавливает библиотеку, и последняя строка запускает программу.

Как отмечено здесь, Вы можете вышеупомянутое первого показа export строка в терминале, и затем выполненный

ldd /path/to/my/program 

проверять, что это загружает корректные библиотеки.

2
ответ дан 11 October 2012 в 18:02

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

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