【问题标题】:Executable runs from terminal but fails within application可执行文件从终端运行,但在应用程序中失败
【发布时间】:2017-01-18 06:05:47
【问题描述】:

我创建了一个示例项目来测试我在 Linux Ubuntu 中的动态库 (.so)。

程序在从终端启动时正确编译并运行。它按预期工作 - 在终端 ./Main 中找到所有依赖项和函数。

从 QT(构建/运行)中启动时,出现错误: Cannot open a_dependent_library.so: cannot open shared object file: No such file or directory

我的环境变量LD_LIBRARY_PATH包含a_dependent_library.so所在的目录

请指教。

【问题讨论】:

  • $LD_LIBRARY_PATH 是否设置在 QtCreator 启动的环境中?或者,您可以在 Project -> Kit / Run 中设置它
  • 我已经有一个 cmake 文件,使用它我正在创建 Qt 项目。有没有办法在 cmake 中设置 LD_LIBRARY_PATH ? (我假设它应该选择 a_dependent_library.so 本身,因为它的目录已经在 LD_LIBRARY_PATH 中)
  • 我在 cmake 文件中尝试了这个:link_directories(../lib) (这只适用于绝对路径,我最好不要这样做)然后在 target_link_libraries 中使用 -la_dependent_library 解决了错误,但使用仅限绝对路径
  • 不确定 cmake 与环境有什么关系,它会生成您的构建文件。你说你设置了$LD_LIBRARY_PATH,但也许这只是在你正在执行程序的shell中

标签: qt ubuntu environment-variables .so


【解决方案1】:

确保在 QTCreator 中添加 env 变量 ---> 项目 --> 执行选项卡(不是编译选项卡) ---> 执行环境 --->添加你的。

这些是 qt 项目的 Run 中使用的环境变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    相关资源
    最近更新 更多