首页 >后端开发 >Golang >在yocto中编译golang包

在yocto中编译golang包

WBOY
WBOY转载
2024-02-09 20:10:09677浏览

在yocto中编译golang包

php小编草莓为您介绍在yocto中编译golang包的方法。Yocto是一个开源的嵌入式Linux构建系统,而Golang是一种强大的编程语言,将它们结合起来可以为嵌入式设备开发提供更多的灵活性和效率。编译golang包需要一些特定的步骤和配置,我们将在本文中详细介绍如何在yocto中成功完成这一过程。无论您是初学者还是有经验的开发人员,本文都将为您提供有用的指导和提示,让您轻松掌握在yocto中编译golang包的技巧。

问题内容

我正在尝试编写一个 yocto 配方来编译 https://github.com/bluenviron/mediamtx 包,该包是在 golang 上编写的。无论如何,我无法获取构建二进制文件的包。我对 go 几乎没有经验。

到目前为止,我已经成功地获得了从 git 克隆正确版本并使用正确的 lic_files_chksum 的方法,但我正在努力让它从源代码中实际生成二进制文件。

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

inherit goarch pkgconfig

#GO_IMPORT = "github.com/bluenviron/mediamtx"

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

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

S = "${WORKDIR}/git"

SRCREV = "21756a4d54152872cda48469861147ee652df922"

FILES_${PN} += "${GOBIN_FINAL}/*"


DEPENDS += "\
        go \
        python \
"

do_install_append() {
    cp ${D}${bindir}/mediamtx ${D}${bindir}/${BPN}
}

如果我删除 do_install_append ,那么配方会成功构建,但它不会编译代码来创建二进制文件 - 这对我来说似乎很明显,因为没有 do_compile 部分。我似乎找不到任何信息告诉我如何编译它。

如果有人能够为我提供这个包的 yocto 食谱,那就太好了,如果没有,那么任何类型的帮助/指导都会受到赞赏。谢谢。

解决方法

我也遇到了同样的问题,这对我有用。

SUMMARY = "MediaMTX / rtsp-simple-server is a ready-to-use and zero-dependency server and proxy that allows users to publish, read and proxy live video and audio streams."
GO_IMPORT = "github.com/bluenviron/mediamtx"
HOMEPAGE = "https://${GO_IMPORT}"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=77fd2623bd5398430be5ce60489c2e81"

SRC_URI = "git://${GO_IMPORT};branch=main;protocol=https"
SRCREV = "65f617aa7c326f491c4f4f4a4d52beea3bd6abc7"

GO_INSTALL = "${GO_IMPORT}"
do_compile[network] = "1"

# build executable instead of shared object
GO_LINKSHARED = ""
GOBUILDFLAGS:remove = "-buildmode=pie"

inherit go-mod

FILES:${PN} += "/usr/local/bin"

我正在使用 yocto 的 kirkstone 版本。

以上是在yocto中编译golang包的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除