我想在与我的应用程序所居住的位置相同的目录中包括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_PATHQMAKE_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().

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top