【问题标题】:How can i use Opencv build in one Linux PC to the other?我如何在一台 Linux PC 中使用 Opencv 构建到另一台?
【发布时间】:2017-08-22 06:17:06
【问题描述】:

我正在尝试使用 opencv 创建一个 C++ 应用程序,并与其他未在其 PC 上安装 Opencv 的用户共享该应用程序。我该怎么做?

我试过了:

  1. 我复制了一些 /home/myfolder 路径中的所有头文件、源文件和库。
    1. 我创建了应用程序并链接了 /home/myfolder 中存储的所有文件。
    2. 将环境变量 LD_LIBRARY_PATH 设置为指向 .bashrc 文件中的 /home/myfolder,以便应用程序可以在运行时找到库。

我能够在我的 PC 上编译,但是当我与其他 PC 共享我的文件夹并链接所有库时,我收到 Opencv 未定义的引用错误。

谢谢

【问题讨论】:

  • 假设它是相同的架构并且您只想共享应用程序本身,为什么不将可执行文件传递给另一台 PC 并运行呢? (当然你需要静态链接 OpenCV 库)。
  • 感谢您的回复。两台PC都是64位的。如果我只共享可执行文件,则它必须与其他 PC 中没有的所有库(如 opencv)链接。所以我在.bashrc中设置环境变量路径指向共享文件夹,它有Opencv lib文件,但我仍然面临未定义的引用错误。
  • 你试过用静态链接编译它吗?
  • 如果我的理解是正确的,你的意思是说在我的 PC 上构建了我的应用程序后,我应该将整个应用程序连同所有必要的头文件、源文件和 lib 文件复制到另一台 PC 并在编译时我应该做静态链接。我的理解正确吗?如何进行静态链接?请提出建议。
  • 静态链接意味着您将所需的库集成到可执行文件本身中。所以它是真正的“独立”。这有增加可执行文件大小的缺点。

标签: c++ linux opencv


【解决方案1】:

答案是静态链接。如果您不关心可执行文件的大小并且目标机器没有所需的库,只需在可执行文件中提供它们即可。 请查看this问题以供参考。

【讨论】:

    【解决方案2】:

    此答案具有安全隐患 - 使用前请告知自己,并且仅在专用网络上使用。


    您可以让其他用户 ssh 进入您的 PC 并使用 -X-Y 选项将 X11 连接转发到他自己的计算机。

    所以,其他用户会这样做:

    ssh -Y someUser@yourPC yourApp
    

    您需要考虑是否要信任该人以您的身份登录,或者您是否希望在您的 PC 上创建一个只能运行您的特定应用而不能运行其他应用的其他用户。


    另一种选择可能是让其他用户在他的机器上键入以下内容,让他的 X11 显示器可用于您的 PC:

    xhost +
    

    然后,您可以在您的机器上启动您的应用程序,但将显示转发到他的机器 - 这样他就不需要登录到您的机器或输入您的密码:

    DISPLAY=<otherPC>:0  yourApp
    

    【讨论】:

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