0

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 文件,是否还需要像上面那样解析依赖项?

谢谢!

4

1 回答 1

0

看起来它是为(可能)在另一台机器上部署/安装创建一个安装包。

我记得当我编写 Qt 代码(即打包所有依赖的库/插件)时,它是自动化的(在我自己的 makefile 中)。当 Qt 程序运行时,它通常会在同一个目录中查找具有确切结构的目录,lib/...这样lib/plugins/...当您使用 lib 子文件夹运行编译的可执行文件(例如在另一台机器上)时,它就会知道库的位置。我现在不记得你是否仍然需要做任何事情,比如将 LD_LIBRARY_PATH 设置为 ./lib - 我想我记得添加一个 lib 路径作为我的链接器命令的一部分。

您可以从一个旧的相关问题中看到我的答案:how-to-deploy-qt-application - 在这个答案中,我尝试使用 ldd 等工具自动化您在上面看到的这个过程。

于 2019-01-27T20:56:56.577 回答