Bitbake / Yocto recipes for cross compiling golang program

For compiling simple golang helloworld program as part of yocto build framework, we need to download meta-golang from and use this meta layer along with poky to build our written bitbake recipes for cross compilation of golang program.

PLEASE NOTE: Starting with OE-Core ‘rocko’ (Yocto Project 2.4), Go support is available directly in OE-Core, and meta-golang is no longer under active development.

For Yocto 2.4 and Later

$ git clone git://
$ cd openembedded-core/
$ git checkout -b thud origin/thud

For Yocto 2.3 and Earlier

 $ git clone 
 $ cd meta-golang 

Now, we need to create files with following directory structure as,

 $ tree recipes-devtools/examples/ 
├── files
│ └── helloworld.go

1 directory, 3 files

Now, lets create those files as below,

 $ vim recipes-devtools/examples/files/helloworld.go 
package main

import "fmt"

func main() {
        fmt.Println("Hello, world !")
 $ vim recipes-devtools/examples/ 
DESCRIPTION = "This is a simple example recipe that cross-compiles a Go program."
SECTION = "examples"

DEPENDS = "golang-cross-arm"

export GOARCH="arm"

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

S = "${WORKDIR}"
 $ vim recipes-devtools/examples/ 

SRC_URI += " \
  file://helloworld.go \

do_compile() {
  go build helloworld.go

do_install() {
  install -d "${D}/${bindir}"
  install -m 0755 "${S}/helloworld" "${D}/${bindir}"

Now, once you integrate this meta-golang with poky, you will be able to compile this simple go language program using bitbake as,

 $ bitbake go-helloworld 

You may also like to read lot of information about Go Language here. and Yocto Information here

Follow Lynxbee


  1. Shawn September 18, 2019
  2. Shawn December 3, 2019
    • Shawn December 3, 2019

Leave a Reply / Ask Question