Какой общепринятый метод развертывания приложения linux, основанного на разделяемых библиотеках?

У меня есть приложение, основанное на 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 . VTK, с другой стороны, помещает свои библиотеки в /usr/local/lib/vtk-5.9 , который не является частью LD_LIBRARY_PATH на большинстве пользовательских машин, и поэтому не может быть найден, если не внесены некоторые изменения. в систему. Копирование файлов VTK в '/ usr / local / lib' не позволяет 'ldd' видеть файлы.

Итак, как я могу заставить мое приложение видеть VTK для использования библиотек?

В Windows развертывание dlls очень прост, потому что я могу просто включить их в установщик, и приложение найдет их, потому что они находятся в локальном каталоге. Этот подход не работает в Linux, поэтому я собирался попросить пользователей установить Qt, GDCM и VTK из любого подходящего источника и использовать местоположения по умолчанию, а затем указать приложению эти местоположения по умолчанию. Однако, поскольку VTK помещает вещи в нестандартное место, следует ли ожидать, что пользователи изменят LD_LIBRARY_PATH? Должен ли я включать конкретные версии библиотек, которые мне нужны, а затем выяснить, как заставить исполняемый файл выглядеть в локальном каталоге для этих библиотек и игнорировать те, которые он находит в пути к библиотеке?

20
задан mmr 17 August 2011 в 21:27
поделиться