如何设置Qt应用程序找到Qt模块的位置?

yan*_*nce 11 qt makefile dynamic-linking

我想将libQtGui.so.4 libQtNetwork.so.4和libQtCore.so.4包含在我的app所在的目录中.我怎么能让Qt理解这个?目的是拥有一个使用共享库的独立应用程序

bay*_*ith 9

设置LD_LIBRARY_PATH环境变量是一个选项.例如:

export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

另一个选择是在链接期间设置Qt应用程序的RPATH.将RPATH设置为值"$ ORIGIN"将使动态链接器在运行时查找与Qt应用程序相同的目录.例如,如果使用qmake,请将以下代码段添加到项目文件中:

unix:!mac{
  QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
  QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
  QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/libs
  QMAKE_RPATH=
}
Run Code Online (Sandbox Code Playgroud)

这会将RPATH设置为"$ ORIGIN:$ ORIGIN/lib:$ ORIGIN/libs",这意味着动态链接器将首先查看Qt应用程序的位置,然后在其位置的lib子目录中,然后在库中查找子目录在其位置,最后在任何系统定义的位置.