【问题标题】:QtCreator deploy different version libraryQtCreator 部署不同版本库
【发布时间】:2021-06-13 12:22:15
【问题描述】:

我使用 QT Creator 创建了一个项目,并希望在 Linux 远程设备 (Ubuntu) 上运行。但是,当我尝试在远程主机上执行文件时,遇到Cannot Open Shared Object File 错误。也许 QT Creator 已经用 Lib 版本构建,当前打开了本地机器(Boost 版本 1.75.0),所以当我在远程机器上运行可执行文件(安装了 Boost 1.65.1)时,失败。

我的问题?

如何在远程机器上构建而不是在本地机器上构建并上传,或者可以在 Cmakelist.txt 中更改版本(Boost 版本)。配置 QT Creator 或任何其他想法?

信息本地虚拟机:

  • QtCreator 4.14(基础 QT 5.15.2)
  • 提升 1.75.0

信息远程虚拟机(Ubuntu):

  • 提升 1.65.1

注意:我可以使用 CMake 构建和运行项目,并在远程机器上手动制作。然后它将在远程机器上使用正确的版本 BOOST 1.65.1

谢谢。

【问题讨论】:

    标签: c++ qt boost qt-creator


    【解决方案1】:

    您应该在远程 VM 上查找 Boost 1.65 二进制文件。比如:

    find_package(CURL REQUIRED)
    find_package(Boost 1.65 REQUIRED COMPONENTS system)
    add_executable(MyProject main.cpp)
    target_link_libraries(MyProject Boost::system CURL::libcurl)
    

    参照。 https://cmake.org/cmake/help/latest/module/FindBoost.html

    现在您的 CMake 脚本无法知道 boost_systemcurl 指的是什么以及从哪里获取它们。

    【讨论】:

    • 我认为 find_package 调用至少会查找 1.65 版本,而不仅仅是 1.65。
    • 重点是:使 find_package() 与两种 VM 设置兼容。
    • 如果他们仍然与 Boost 1.75 链接并尝试在具有 Boost 1.65 的系统上运行可执行文件,那将无法解决 OP 的问题。
    • 我怀疑他在远程 VM 上安装了 1.75 和 1.65。更有可能的是,他将二进制文件从本地复制到远程,并希望它兼容。
    • 对,他们从本地机器复制二进制文件,并专门询问如何在远程机器上编译(通过Qt Creator)而不是本地构建+部署。你的回答没有回答问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2016-09-28
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多