Почему нам нужно разрешать зависимости после `make` и` make install`? - PullRequest
0 голосов
/ 27 января 2019

https://pgmodeler.io/support/installation говорит:

Разрешение зависимостей

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

GNU / Linux

1: cd $QT_ROOT/lib
2: cp libQt5DBus.so.5 libQt5PrintSupport.so.5 libQt5Widgets.so.5 libQt5Network.so.5 libQt5Gui.so.5 libQt5Core.so.5 libQt5XcbQpa.so.5 libQt5Svg.so.5 libicui18n.so.5* libicuuc.so.5* libicudata.so.5* $PGMODELER_ROOT/lib
3: cd $QT_ROOT/plugins
4: mkdir $PGMODELER_ROOT/lib/qtplugins
5: mkdir $PGMODELER_ROOT/lib/qtplugins/imageformats
6: mkdir $PGMODELER_ROOT/lib/qtplugins/printsupport
6: mkdir $PGMODELER_ROOT/lib/qtplugins/platforms
7: cp -r imageformats/libqgif.so imageformats/libqico.so imageformats/libqjpeg.so imageformats/libqsvg.so              imageformats/libqtga.so imageformats/libqtiff.so imageformats/libqwbmp.so $PGMODELER_ROOT/lib/qtplugins/imageformats
8: cp -r printsupport/libcupsprintersupport.so $PGMODELER_ROOT/lib/qtplugins/printsupport
9: cp -r platforms/libqxcb.so $PGMODELER_ROOT/lib/qtplugins/platforms
10: echo -e "[Paths]\nPrefix=.\nPlugins=lib/qtplugins\nLibraries=lib" > $PGMODELER_ROOT/qt.conf
11: cp $PGMODELER_SOURCE/start-pgmodeler.sh $PGMODELER_SOURCE/pgmodeler.vars $PGMODELER_ROOT
12: chmod +x $PGMODELER_ROOT/start-pgmodeler.sh

После make и make install, могут ли зависимости динамически разрешаться (динамическое связывание) при запуске программы? Какова цель сделать выше?

Если я вместо этого запускаю sudo checkinstall, чтобы создать файл deb, нужно ли мне разрешать зависимости, как указано выше?

Спасибо!

1 Ответ

0 голосов
/ 27 января 2019

Похоже, что это создание инсталляционного пакета для (потенциально) развертывания / установки на другой машине.

Я вспоминаю, автоматизировал ли это (в моем собственном make-файле), когда я писал код Qt (т.е. упаковывалвсе зависимые библиотеки / плагины).Когда программа Qt запускается, она часто смотрит в один и тот же каталог с точной структурой lib/... и lib/plugins/..., так что когда вы запускаете скомпилированный исполняемый файл (скажем, на другом компьютере) с подпапкой lib, он знает, где находятся библиотеки.Сейчас я не могу вспомнить, нужно ли вам что-либо делать, например, установить для LD_LIBRARY_PATH значение ./lib. Думаю, я вспоминаю о добавлении пути lib в качестве части моей команды компоновщика.

Вы можете увидеть мой ответ здесь изстарый связанный вопрос: how-to-deploy-qt-application - в этом ответе я попытался автоматизировать этот процесс, который вы видите выше, используя такие инструменты, как ldd.

...