2011-01-08 9 views
3

Я разрабатываю приложение Qt в Linux с помощью Qt Creator (2.1 RC). Я создал 2 проекта и использовал мастер для добавления проекта библиотеки в проект приложения. Однако, когда я бегу, я получаю ошибку:Разработка приложений Qt в системах Unix с использованием Qt Creator

/home/jakepetroules/silverlock/silverlock-build-desktop/desktop/silverlock: error while loading shared libraries: libsilverlocklib.so.1: cannot open shared object file: No such file or directory

Есть некоторые QMAKE переменной можно установить так, что Qt Creator будет создана среда правильно работать? Это очень неприятно, чтобы скопировать все файлы в другой каталог с помощью сценария запуска, чтобы иметь возможность протестировать сборку. В Windows это работает отлично - Qt Creator автоматически добавляет каталоги, содержащие DLL, в PATH, когда запускает ваше приложение (где его запуск из Explorer говорит, что DLL не найдена). Mac OS X еще хуже, нужно запустить install_name_tool на все ...

Итак, как я могу настроить файлы qmake, чтобы все работало прямо с кнопки запуска в Qt Creator? Трудно отлаживать и без этой способности.

ответ

5

Да, Творец раздел, в котором вы можете установить любую среду, необходимую для запуска вашего приложения.

На Творца 2.0.0 это доступ: Проекты -> Targets -> (ваша цель) -> Run -> Run Environment (после того, как вы открыли свой проект)

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

Другим вариантом является добавление небольшого сценария оболочки в исходное дерево, которое задает любые переменные, и добавляет конфигурацию запуска «Пользовательский исполняемый файл» для запуска этого сценария. Доступ к нему осуществляется через один и тот же экран.

6

У меня была аналогичная проблема с запуском qt-приложений с QTCreator на моей Linux-машине. Я решил, добавив следующие строки в файл .pro клиентского приложения:

unix:LIBS += -L/home/projects/my_libs/ -lmy_lib 

unix:{ 
    QMAKE_LFLAGS += -Wl,--rpath=/home/projects/my_libs/ 
    QMAKE_LFLAGS_RPATH= 
} 

информация о RPATH находится здесь: rpath

надеюсь, что это помогает, считает

+0

Не использует вредную практику RPATH, потому что она переопределяет динамический компоновщик? –

+0

Да, вы правы, использование rpath иногда рассматривается как злая/плохая практика, но в этом случае я не нашел другого подходящего решения проблемы; поэтому я думаю, что выбора не было, кроме как использовать его или запускать мои вещи с помощью сценариев запуска. –

+0

'QMAKE_RPATHDIR + =/path/blub' работал для меня. – Adam

1

Только с помощью этого:

unix:LIBS += -L/home/projects/my_libs/ -lmy_lib 
unix:{ 
    QMAKE_LFLAGS += -Wl,--rpath=/home/projects/my_libs/ 
} 

Это sloved моя проблема тоже.