У меня есть приложение, которое использует Qt, GDCM и VTK , основной средой сборки является Qt. Все эти библиотеки являются кроссплатформенными и компилируются в Windows, Mac и Linux. Мне нужно развернуть приложение в Linux после развертывания в Windows. Версии vtk и gdcm, которые я использую, являются транковыми версиями от git (примерно месяц назад), более поздние, чем те, которые я могу получить apt-get в Ubuntu 11.04, которая является моей текущей (и единственной) целью развертывания Linux.
Каков принятый метод для развертывания приложения, использующего библиотеки такого типа?
Должен ли я использовать статические ссылки здесь, чтобы избежать LD_LIBRARY_PATH? Я вижу противоречивые сообщения о LD_LIBRARY_PATH; учебные пособия, такие как этот , предполагают, что это «правильный способ» изменить путь к библиотеке для использования общих библиотек через перезагрузку системы. Другие предлагают , чтобы я никогда не устанавливал LD_LIBRARY_PATH. В версии GDCM по умолчанию при установке библиотеки уже помещаются в каталог /usr/local/lib
, поэтому эти библиотеки отображаются при запуске ldd <my program>
. VTK, с другой стороны, помещает свои библиотеки в /usr/local/lib/vtk-5.9
, который не является частью LD_LIBRARY_PATH на большинстве компьютеров пользователя, и поэтому не найден, если в систему не будут внесены некоторые изменения. Копирование файлов VTK в / usr / local / lib не позволяет ldd видеть файлы.
Итак, как я могу заставить мое приложение видеть VTK для использования библиотек?
В Windows развертывание библиотек DLL очень просто, потому что я могу просто включить их в установщик, и приложение находит их, потому что они находятся в локальном каталоге. Этот подход не работает в Linux, поэтому я собирался заставить пользователей устанавливать Qt, GDCM и VTK из любого подходящего источника и использовать местоположения по умолчанию, а затем приложение указывать на эти местоположения по умолчанию. Однако, поскольку VTK помещает вещи в нестандартное место, я должен также ожидать, что пользователи изменят LD_LIBRARY_PATH? Должен ли я включить конкретные версии библиотек, которые мне нужны, а затем выяснить, как заставить исполняемый файл выглядеть в локальном каталоге для этих библиотек и игнорировать те, которые он находит в пути к библиотеке?