我如何在一台 Linux PC 中使用 Opencv 构建到另一台?

Posted

技术标签:

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

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

我试过了:

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

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

谢谢

【问题讨论】:

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

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

【讨论】:

【参考方案2】:

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


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

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

ssh -Y someUser@yourPC yourApp

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


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

xhost +

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

DISPLAY=<otherPC>:0  yourApp

【讨论】:

以上是关于我如何在一台 Linux PC 中使用 Opencv 构建到另一台?的主要内容,如果未能解决你的问题,请参考以下文章

十年前,女:“对不起,我不会喜欢你的,你不要再坚持了,就好比让 Linux 和 Windows 同时运行在一台PC机上,可能吗?

应用程序的单选按钮需要在一台 PC 上按*双*加速键

为啥 load_ps() 可以在一台 PC 上工作,而不能在另一台 PC 上工作?

小白该如何学习Linux操作系统

多台电脑使用H2文件模式可以吗

Linux-学习笔记