英文:
compile golang package in yocto
问题
我正在尝试编写一个yocto配方来编译https://github.com/bluenviron/mediamtx包,该包是用Golang编写的。无论如何,我都无法使该包生成二进制文件。我对Go几乎没有经验。
到目前为止,我已经成功让配方从git克隆正确的版本,并具有正确的LIC_FILES_CHKSUM,但我无法让它从源代码生成二进制文件。
如果我删除do_install_append
,那么配方将成功构建,但它不会编译代码以创建二进制文件-这对我来说似乎是显而易见的,因为没有do_compile
部分。我找不到任何告诉我如何进行编译的信息。
如果有人能为我提供这个包的yocto配方,那将非常好,如果不能,任何形式的帮助/指导也将不胜感激。谢谢。
英文:
I am trying to write a yocto recipe to compile https://github.com/bluenviron/mediamtx package, which is written on Golang. And no matter what, I can't get the package to build the binary. I have little to no experience with Go.
So far, I have managed to get the recipe to clone proper version from git and with correct LIC_FILES_CHKSUM but I am struggling to get it to actually generate a binary from the source.
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}
}
if I remove do_install_append
then the recipe builds successfully but it doesn't compile the code to create a binary - which seems obvious to me as there is no do_compile
section. I can't seem to find any information which tells me how to get it to compile.
It'd be great if someone is able to provide me a yocto recipe for this package, if not then any kind of help/direction is appreciated. Thanks.
答案1
得分: 2
我遇到了同样的问题,这个方法对我有效。
SUMMARY = "MediaMTX / rtsp-simple-server是一个即插即用且无依赖的服务器和代理,允许用户发布、读取和代理实时视频和音频流。"
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版本。
英文:
I had that same problem, this worked for me.
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"
I'm using Yocto's kirkstone release.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论