在Unix系统中使用Qt Creator开发Qt应用程序

3
我正在使用Qt Creator(2.1 RC)在Linux上开发Qt应用程序。我创建了两个项目,并使用向导将库项目添加到应用程序项目中。但是当我运行它时,出现以下错误:/home/jakepetroules/silverlock/silverlock-build-desktop/desktop/silverlock: error while loading shared libraries: libsilverlocklib.so.1: cannot open shared object file: No such file or directory。是否有一些qmake变量可以设置,以便Qt Creator正确设置环境来运行?必须复制所有文件到另一个目录并使用启动脚本才能测试构建,这非常麻烦。在Windows上,它可以完美地工作 - 在运行应用程序时,Qt Creator会自动将包含DLL的目录添加到PATH中(从Explorer运行则会显示DLL未找到)。Mac OS X更糟糕,需要在所有内容上运行install_name_tool...那么,如何设置我的qmake文件,以便一切都可以从Qt Creator的运行按钮正常工作?没有这个功能很难进行调试。
3个回答

6

我在linux机器上使用QTCreator运行qt应用程序时遇到了类似的问题。我通过在客户端应用程序的.pro文件中添加以下行来解决它:

unix:LIBS += -L/home/projects/my_libs/ -lmy_lib

unix:{
  QMAKE_LFLAGS += -Wl,--rpath=/home/projects/my_libs/
  QMAKE_LFLAGS_RPATH=
}

这里有关rpath的信息: rpath

希望这能帮到你,祝好。


使用RPATH不是一种不好的做法吗?因为它会覆盖动态链接器。 - Jake Petroules
是的,你说得对,使用rpath有时被视为邪恶/不良实践,但在这种情况下,我没有找到其他适合解决问题的方法;所以我想除了使用它或者使用启动脚本运行我的东西之外别无选择。 - serge_gubenko

5
是的,Creator有一个部分,您可以在其中设置运行应用程序所需的任何环境。在 Creator 2.0.0 中,您可以通过以下方式访问:项目->目标->(您的目标)->运行->运行环境(在打开项目后)。然后,您可以添加或删除任何环境变量,包括LD_LIBRARY_PATH。有一件事我不确定是否可能将构建路径替换为这些变量的值,以便您不必将其硬编码到LD_LIBRARY_PATH中。另一个选项是向源代码树添加一个小的shell脚本,该脚本设置所需的任何变量,并添加“自定义可执行文件”运行配置来运行该脚本。通过相同的屏幕进行访问。

1
仅使用这个:
unix:LIBS += -L/home/projects/my_libs/ -lmy_lib
unix:{
  QMAKE_LFLAGS += -Wl,--rpath=/home/projects/my_libs/
}

它也解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接