You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用gstglfilter时GStreamer CMake项目出现链接错误该如何解决?

核心问题说明

  • 你对readelf的结果理解有误,UND标记表示对应符号是libgstopengl.so的依赖项,而非在该库中定义,这些符号的实际定义在libgstgl-1.0.so中
  • /usr/lib/gstreamer-1.0目录下的文件都是GStreamer运行时动态加载的插件,无需在编译期链接,你手动添加libgstopengl.so的导入库属于错误操作

解决步骤

步骤1:清理错误配置

删除你后续添加的gstopenglextras导入库相关的所有代码,以及target_link_libraries中对gstopenglextras的引用。

步骤2:优化GStreamer查找配置

使用pkg_check_modules的IMPORTED_TARGET参数自动处理头文件路径、库路径和链接依赖,避免手动拼接变量出错:

pkg_check_modules(GST REQUIRED IMPORTED_TARGET
        gstreamer-1.0>=1.4
        gstreamer-sdp-1.0>=1.4
        gstreamer-video-1.0>=1.4
        gstreamer-plugins-base-1.0>=1.4
        gstreamer-app-1.0>=1.4
        gstreamer-gl-1.0>=1.4)

步骤3:修正链接配置

IMPORTED_TARGET会自动传递所有编译和链接参数,无需手动配置target_include_directories的GST_INCLUDE_DIRS部分,只需要给所有用到GStreamer接口的目标链接对应的导入目标即可:

# 如果你写的drawCallback函数在GUI_lib中,需要给GUI_lib也链接GStreamer依赖
target_link_libraries(GUI_lib PUBLIC PkgConfig::GST ${OTHER_FIND_PACKAGE_INCLUDE_DIRS})

# 原someproject的链接配置简化为
target_link_libraries(someproject PUBLIC "${OTHER_FIND_PACKAGE_LIBS}" PkgConfig::GST -lGL -lepoxy)

可选:单独验证gstreamer-gl组件

如果修改后仍提示libgstgl-1.0.so相关错误,可以单独查找该组件确认:

pkg_check_modules(GST_GL REQUIRED IMPORTED_TARGET gstreamer-gl-1.0>=1.4)
# 链接时额外添加PkgConfig::GST_GL
target_link_libraries(someproject PUBLIC PkgConfig::GST_GL)

内容的提问来源于stack exchange,提问作者Edward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 00:39:02