资讯动态

MediaPipe 在 SSH 环境下 glxinfo 显示 unable to open display 怎么排查?

发布时间:2026/9/12 4:42:37 来源:尧图企业网站定制
MediaPipe 在 SSH 环境下 glxinfo 显示 unable to open display 怎么排查【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe在 Linux 桌面上构建带 GPU 支持的 MediaPipe 时需要先确认本机 GPU 的 OpenGL ES 版本是否满足要求ES 3.1 及以上才能跑 TFLite GPU 推理。文档给出的检查手段是glxinfo。但如果你是通过 SSH 远程连到这台机器执行探测命令时会看到这样的输出$ glxinfo | grep -i opengl Error: unable to open display此时看不到任何 OpenGL 版本信息GPU 检查被卡住。根据 GPU Support 文档这个现象与 SSH 连接方式直接相关解决方法是改用带-X选项的 SSH 连接然后重新执行探测。下面按「定位现象 → 修复连接 → 验证结果 → 按版本继续构建」的顺序走一遍。这个检查为什么需要 glxinfo按 GPU Support 文档Linux 桌面上检查 GPU 能否跑 MediaPipe OpenGL ES 的标准流程是$ sudo apt-get install mesa-common-dev libegl1-mesa-dev libgles2-mesa-dev $ sudo apt-get install mesa-utils $ glxinfo | grep -i opengl两条apt-get命令都需要 sudo 权限会在系统里安装 Mesa 开发库和包含glxinfo的mesa-utils工具包如果之前没装过需要先执行这一步才有glxinfo可调用。glxinfo | grep -i opengl用于筛出与 OpenGL 相关的行其中OpenGL ES profile version string一行给出的版本号就是后续判断的依据。MediaPipe 在 Android/Linux 上支持 OpenGL ES 3.2 及以下版本跑机器学习推理的 calculators 和 graphs 则要求 OpenGL ES 3.1 及以上。现象与原因SSH 会话里没有可用的显示环境文档明确指出这一错误出现在「通过 SSH 连接到你的计算机」的场景下glxinfo | grep -i opengl Error: unable to open display也就是说这并不是 GPU 或驱动出了问题而是当前 SSH 会话缺少glxinfo需要的显示环境。修复方法用 ssh -X 重新建立连接文档给出的做法是断开当前连接用-X选项重新建立 SSH 连接后再试。命令中的user和host是你原本连接时使用的用户名和主机地址按实际环境替换ssh -X userhost重连后再次执行探测命令$ glxinfo | grep -i opengl正常情况下输出中应能看到 OpenGL ES profile 的版本行文档给出的示例结果如下仅作为文档示例具体版本取决于你的显卡和驱动$ glxinfo | grep -i opengl ... OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 430.50 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20 OpenGL ES profile extensions:根据版本结果决定构建参数看到 ES 版本号后按 GPU Support 文档 的分支继续ES 3.1 及以上示例中的ES 3.20即属于此档可以在 MediaPipe 中执行 TFLite GPU 推理构建时使用$ bazel build --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 my-target其中my-target替换为你要构建的具体 Bazel target。Linux 安装文档 中的说明与此一致构建 GPU 示例时用--copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11替换掉默认的--define MEDIAPIPE_DISABLE_GPU1。只支持 ES 3.0 及以下仍然可以构建不依赖 TFLite GPU 推理的 MediaPipe target需要额外加一个编译定义$ bazel build --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 --copt -DMEDIAPIPE_DISABLE_GL_COMPUTE my-target文档同时注明MEDIAPIPE_DISABLE_GL_COMPUTE在所有 Apple 系统上会自动定义Apple 不支持 OpenGL ES 3.1所以这条只针对 Linux 桌面。完全不可用 OpenGL ES 的平台应该直接关闭 OpenGL ES 支持来构建$ bazel build --define MEDIAPIPE_DISABLE_GPU1 my-target注意文档的限制在 Android 和 iOS 上OpenGL ES 是 MediaPipe 框架必需的这两端永远不应关闭 GPU 支持上面的禁用方式只适用于没有 OpenGL ES 的构建环境。验证修复是否生效判断链条有两级显示问题是否解决ssh -X重连后再次执行glxinfo | grep -i opengl不再出现Error: unable to open display而是打印出 OpenGL 相关信息说明显示环境已经恢复。GPU 能力是否达标检查输出中的OpenGL ES profile version string只有 ES 3.1 或更高才具备在 MediaPipe 中执行 TFLite GPU 推理的条件这决定你用哪一组 Bazel 参数构建。如果ssh -X后仍然报同样错误文档没有给出进一步的处理步骤此时可以回到 GPU Support 文档 对照检查mesa-common-dev、libegl1-mesa-dev、libgles2-mesa-dev、mesa-utils是否已正确安装或改走MEDIAPIPE_DISABLE_GPU1的 CPU 构建路径参考 安装文档 中 Linux 桌面 CPU 构建的示例如export GLOG_logtostderr1后bazel run --define MEDIAPIPE_DISABLE_GPU1 mediapipe/examples/desktop/hello_world:hello_world。确认版本达标并按对应参数构建通过后就可以按 安装文档 继续运行带 GPU 支持的桌面示例验证 GPU 路径是否真正可用。【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价