- Linux обычно не ищет в каталоге exec для общих библиотек.

я есть приложение, которое опирается на Qt,GDCM, а такжеВТКс основной средой сборки 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>, ВТК, с другой стороны, помещает свои библиотеки в/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? Должен ли я включить конкретные версии библиотек, которые мне нужны, а затем выяснить, как заставить исполняемый файл выглядеть в локальном каталоге для этих библиотек и игнорировать те, которые он находит в пути к библиотеке?

Ответы на вопрос(3)

Ваш ответ на вопрос