如何设置QT应用程序找到QT模块的位置?
-
21-09-2019 - |
题
我想在与我的应用程序所居住的位置相同的目录中包括libqtgui.so.4 libqtnetwork.so.4和libqtcore.so.4。我将如何使QT理解这一点? y目的是拥有一个使用共享库的独立应用程序
解决方案
设置ld_library_path环境变量是一个选项。例如:
export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH
另一个选项是在链接过程中设置QT应用程序的范围。将rpath设置为“ $ oneration”的值将导致动态链接器在运行时与您的QT应用程序相同的目录。例如,如果使用Qmake,请将以下片段添加到您的项目文件:
unix:!mac{
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/libs
QMAKE_RPATH=
}
这将设置为“ $ oneration:$ oneration/lib:$ origin/libs”,这意味着动态链接器将首先在QT应用程序的位置中查看,然后在其位置的LIB子目录中,然后在Libs中在其位置,最后在任何系统定义的位置上进行了子目录。
其他提示
UNIX / Linux将首先查看LD_LIBRARY_PATH(如果设置),然后在系统标准LIB中查看。因此,如果您设置了该设置,则确实可以覆盖。就像在Windows上设置路径一样。相同的效果。订购很重要。
您可以添加./或。也要ld_library_path。
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
LD_LIBRARY_PATH
和 QMAKE_RPATH
从来没有为我工作。相反,我设置了 QMAKE_RPATHDIR
在我的 .pro
文件。例如,在建造和安装后(make install
)QT,已放置在 /usr/local/Trolltech/Qt-4.8.5/lib/
. 。然后我在我的 .pro
文件:
QMAKE_RPATHDIR += /usr/local/Trolltech/Qt-4.8.5/lib/
注意1:相对路径似乎不起作用。喜欢绝对路径。
注2:当你 make
, ,您可以看到以下选项给出了链接器: -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/
注3:要确保二进制链接到正确的库,您可以在运行时显示QT的版本 qVersion()
.