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

如何编写Yocto Recipe编译Go语言的mediamtx RTSP服务器?

解决Yocto构建mediamtx(Go语言RTSP服务器)无二进制生成的问题

以下是修正后的完整Yocto Recipe,以及关键修改点的说明:

完整Recipe代码

SUMMARY = "mediamtx RTSP server"
HOMEPAGE = "https://github.com/bluenviron/mediamtx"
SECTION = "multimedia"
LICENSE = "MIT"

# 继承Go语言构建核心类与架构适配类
inherit go goarch pkgconfig

# 指定Go模块导入路径,是Yocto识别Go项目的关键
GO_IMPORT = "github.com/bluenviron/mediamtx"

LIC_FILES_CHKSUM = "file://LICENSE;md5=77fd2623bd5398430be5ce60489c2e81"

SRC_URI = "git://github.com/bluenviron/mediamtx;branch=main;protocol=https"

S = "${WORKDIR}/git"

SRCREV = "21756a4d54152872cda48469861147ee652df922"

# 明确要打包的文件路径
FILES:${PN} += "${bindir}/${BPN}"
FILES:${PN} += "${datadir}/mediamtx/"

# 依赖项:Go编译环境与Python3(用于项目构建脚本)
DEPENDS += "go python3"

# 编译逻辑:适配Go Modules与跨架构编译
do_compile() {
    export GO111MODULE=on
    export CGO_ENABLED=1
    # 编译主入口,指定输出二进制路径
    go build -v -o ${B}/mediamtx ./cmd/mediamtx
}

# 安装逻辑:部署二进制与默认配置文件
do_install() {
    # 创建二进制目录并安装
    install -d ${D}${bindir}
    install -m 0755 ${B}/mediamtx ${D}${bindir}/${BPN}

    # 安装默认配置文件到数据目录
    install -d ${D}${datadir}/${BPN}
    install -m 0644 ${S}/mediamtx.yml ${D}${datadir}/${BPN}/
}

关键修改点说明

  1. 修正继承的bbclass
    将原goarch替换为go goarch:go.bbclass提供Go项目构建的核心逻辑,goarch自动处理跨架构编译的环境变量(如GOOS、GOARCH),两者结合才能正常触发Go编译流程。

  2. 启用GO_IMPORT
    取消注释GO_IMPORT,这是Yocto识别Go模块路径的核心配置,确保构建系统正确解析项目依赖关系。

  3. 添加do_compile段

    • 开启Go Modules(GO111MODULE=on):mediamtx使用Go Modules管理依赖,必须开启才能正确拉取和编译依赖。
    • 启用CGO(CGO_ENABLED=1):项目依赖部分C语言库,关闭会导致编译失败。
    • 指定编译入口:mediamtx的主程序入口在cmd/mediamtx目录,通过go build指定输出路径到构建目录${B}。
  4. 完善do_install逻辑
    替代原do_install_append,手动创建目录并安装二进制,同时添加默认配置文件的部署,保证目标系统能直接使用默认配置启动服务。

  5. 依赖与文件路径调整

    • 将python改为python3,适配Yocto新版本的Python环境规范。
    • 明确FILES:${PN}路径,避免打包时遗漏二进制和配置文件。

验证方法

构建完成后,在tmp/deploy/ipk/或对应包格式的目录下找到生成的mediamtx包,解压后检查usr/bin/mediamtx和usr/share/mediamtx/mediamtx.yml是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:43:12