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

Buildroot 2019.02.9编译GStreamer1.14.4出现stray \错误如何修复

问题根因

该报错由Debian 11主机预装的高版本*glib-mkenums(≥2.68)*的转义处理逻辑变更导致:GStreamer 1.14.4的枚举类型生成模板中,#include语句前添加了转义反斜杠,旧版glib-mkenums会自动忽略该转义符,新版会将其原样输出到生成的controller-enumtypes.c文件中,最终触发C语法错误。Linux Mint 18.2自带的glib版本较低,因此没有该兼容问题。

Buildroot 2019.02.9下的修复方案

推荐优先使用方案1,无需修改上游源码,适配性更强。

方案1:强制使用Buildroot内置的glib-mkenums

Buildroot 2019.02.9自带的host-glib工具链版本与GStreamer 1.14.4完全兼容,只需指定GStreamer编译时使用内置工具而非主机工具即可:

  1. 编辑Buildroot目录下的package/gstreamer1/gstreamer1.mk文件
  2. 追加如下配置:
GSTREAMER1_CONF_ENV += GLIB_MKENUMS=$(HOST_DIR)/bin/glib-mkenums
  1. 重新编译GStreamer包:
    make gstreamer1-dirclean && make gstreamer1

方案2:补丁修复GStreamer模板

若方案1不生效,可直接修复GStreamer源码中的模板文件:

  1. 在package/gstreamer1/目录下新建补丁文件0001-fix-stray-backslash-in-enumtypes.patch,内容如下:
diff -Naur a/libs/gst/controller/controller-enumtypes.c.template b/libs/gst/controller/controller-enumtypes.c.template
--- a/libs/gst/controller/controller-enumtypes.c.template
+++ b/libs/gst/controller/controller-enumtypes.c.template
@@ -1,6 +1,6 @@
 /*** BEGIN file-header ***/
 #include "controller-enumtypes.h"
-\#include "gstinterpolationcontrolsource.h"
-\#include "gstlfocontrolsource.h"
+#include "gstinterpolationcontrolsource.h"
+#include "gstlfocontrolsource.h"
 /*** END file-header ***/
  1. 编辑package/gstreamer1/gstreamer1.mk,开启自动重配置:
GSTREAMER1_AUTORECONF = YES
  1. 重新编译GStreamer包即可。
验证方法

编译完成后查看output/build/gstreamer1-1.14.4/libs/gst/controller/controller-enumtypes.c文件,所有#include语句前无多余反斜杠即为修复成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:36:00