2015-10-08 4 views
0

После установки qwt-6.1.2.zip я вижу его по адресу:"ошибка поиска символа: ...: undefined symbol" (Qwt) Должен ли я установить LD_LIBRARY_PATH?

/usr/local/qwt-6.1.2/lib/libqwt.so 

приложение Qt Я занимаюсь разработкой зависит в, так .pro имеет следующее:

INCLUDEPATH += "/usr/local/qwt-6.1.2/include" 
    LIBS += -L"/usr/local/qwt-6.1.2/lib" 
    CONFIG(debug, debug|release) { 
     LIBS += -lqwtd 
    } else { 
     LIBS += -lqwt 
    } 

Это компилирует хорошо, но исполнение (за пределами QtCreator) дает:

"symbol lookup error: ...: undefined symbol" 

Что решается делать:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qwt-6.1.2/lib 
export LD_LIBRARY_PATH 

Если я правильно понял, LD_LIBRARY_PATH should only be set in case the .so files are in exotic (non-standard) locations. Вопрос, /usr/local/qwt-6.1.2/lib является стандартным (я думаю, нет)?

Когда и где следует установить LD_LIBRARY_PATH? Я думаю, что один вариант, чтобы сделать это во время установки, что-то вроде:

echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/qwt-6.1.2/lib" >> .bashrc 
echo "export LD_LIBRARY_PATH" >> .bashrc 

Один недостаток этого является то, что несколько установок будет писать этот материал несколько раз в .bashrc.

Мой вопрос связан с this, и на самом деле я закончил с использованием идеи -rpath, но я думаю, что здесь контекст можно рассматривать как более конкретный, связанный с Qt, поэтому он не дублируется. Фактически, я закончил использование this.

+0

Возможный дубликат [В чем разница между -rpath и -L?] (Http://stackoverflow.com/questions/8482152/whats-the-difference-between-rpath-and -l) –

ответ

1

Для вашего используемого прецедента кажется, что вы не должны использовать LD_LIBRARY_PATH. Вместо этого вы должны добавить файл конфигурации в /etc/ld.so.conf.d/ и запустить ldconfig.

Например, как корень выполнить следующие команды:

echo "/usr/local/qwt-6.1.2/lib" > /etc/ld.so.conf.d/qwt.conf 
ldconfig 

ldconfig создает информацию, необходимую для динамически связанных программ для решения, где библиотеки расположены. Созданный файл конфигурации сообщает ldconfig для поиска в указанном каталоге для большего количества библиотек для включения в свою базу данных разделяемых библиотек. Это позволяет программам использовать общую библиотеку без необходимости устанавливать переменную окружения LD_LIBRARY_PATH, потому что теперь она является стандартной базой .

+0

Не пробовал это (найдено другое решение, как редактирование в конце вопроса), но в этом случае, что произойдет, если еще одна версия Qwt уже установлена ​​(в /usr/lib/libqwt.so)? – KcFnMi