Home >Backend Development >Golang >Yocto cannot cross compile GoLang Wails application
I am using yocto kirkstone to build a custom embedded linux board build system for armv7. I have go-runtime version 1.20 in my yocto metalayer.
I'm trying to build a simple sample golang "wails" (https://github.com/wailsapp/wails) application that I can build on a mac for my target. This requires wails 'cli' to be installed to build the application. I don't know how to cross compile this application with yocto. How can I do this? Thanks.
This command failed in do_compile():
wails build .
The error I receive looks like this:
... | hash[link github.com/wailsapp/wails/v2/cmd/wails]: "packagefile internal/lazyregexp=pnipfusr6bdvpzrfoo2q\n" | hash[link github.com/wailsapp/wails/v2/cmd/wails]: 58443e84e42fc0e5254356b82561065095a39a1606a457c34cf63d8dd364173c | hash subkey a9f4ce5dc6a5c97cab06b5c8cfec3a64e5db0f7bcc79e02fc0002cafcc719a67 "link-stdout" = 80ee6464b934ca7407296396849147804b0862ee25e2b844a6e9cc98cfa588b3 | qemu-arm: could not open '/lib/ld-linux-armhf.so.3': no such file or directory | warning: /home/sensonix/poky/build-microchip/tmp/work/cortexa5t2hf-neon-vfpv4-poky-linux-gnueabi/go-example/1.0.0-r0/temp/run.do_compile.87405:178 exit 255 from './bin/linux_arm/wails build .' | warning: backtrace (bb generated script): | #1: do_compile, /home/sensonix/poky/build-microchip/tmp/work/cortexa5t2hf-neon-vfpv4-poky-linux-gnueabi/go-example/1.0.0-r0/temp/run.do_compile.87405, line 178 | #2: main, /home/sensonix/poky/build-microchip/tmp/work/cortexa5t2hf-neon-vfpv4-poky-linux-gnueabi/go-example/1.0.0-r0/temp/run.do_compile.87405, line 186
bitbake recipe:
DESCRIPTION = "Wails Example App" LICENSE = "CLOSED" LIC_FILES_CHKSUM="" SRC_URI = "file://wails.json" SRC_URI += "file://README.md" SRC_URI += "file://main.go" SRC_URI += "file://app.go" SRC_URI += "file://frontend" GO_IMPORT = "import" GO_LINKSHARED = "" PTEST_ENABLED="0" export GO111MODULE="auto" CGO_ENABLED = "1" inherit go goarch do_compile() { cd ${WORKDIR}/build export TMPDIR="${GOTMPDIR}" ${GO} install github.com/wailsapp/wails/v2/cmd/wails@latest export GOPATH="$GOPATH:${S}/src/import/.gopath" # Pass the needed cflags/ldflags so that cgo # can find the needed headers files and libraries export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}" export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}" ./bin/linux_arm/wails build . #${GO} build ${GO_LINKSHARED} ${GOBUILDFLAGS} -o streamerapp cd ${OLDPWD} } do_install() { cd ${WORKDIR}/build #install -m <permisions> SRC DEST mkdir -p ${D}${bindir} #install -m 0755 ./wailsapp ${D}${bindir} cd ${OLDPWD} }
I solved this problem using the following method.
DESCRIPTION = "Wails Example App" LICENSE = "CLOSED" LIC_FILES_CHKSUM="" LICENSE = "CLOSED" SRC_URI = "git://<a href="https://www.php.cn/link/89fee0513b6668e555959f5dc23238e9" class="__cf_email__" data-cfemail="67000e1327000e130f12054904080a">[email protected]</a>/abc/go-wails-demo.git;branch=master;protocol=ssh" SRCREV = "eaa61c30bff997c811da1d176c7273cea4f6b7d8" GO_IMPORT = "import" GO_LINKSHARED = "" PTEST_ENABLED="0" CGO_ENABLED = "1" DEPENDS = "nodejs-native" DEPENDS += "gtk+3 webkitgtk" INSANE_SKIP:${PN} += "already-stripped" inherit go goarch pkgconfig do_compile() { # Allow cloning of properietary repositories git config --global --add url."<a href="https://www.php.cn/link/89fee0513b6668e555959f5dc23238e9" class="__cf_email__" data-cfemail="e5828c91a5828c918d9087cb868a88">[email protected]</a>:".insteadOf "https://github.com/" ${GO} env -w GOPRIVATE="github.com/abc" cd ${WORKDIR}/go-wails-demo-1.0.0/src/import export TMPDIR="${GOTMPDIR}" # Pass the needed cflags/ldflags so that cgo # can find the needed headers files and libraries export QEMU_LD_PREFIX="${STAGING_DIR_TARGET}" export GOARCH=${TARGET_GOARCH} export CGO_ENABLED="1" export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}" export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}" export GO111MODULE="on" export GOPATH="${WORKDIR}/build" export GIT_TERMINAL_PROMPT=1 ${GO} install github.com/wailsapp/wails/v2/cmd/wails@latest /usr/bin/sync sleep 0.5 ${WORKDIR}/build/bin/linux_arm/wails build . } do_install() { cd ${WORKDIR}/go-wails-demo-1.0.0/src/import/build/bin mkdir -p ${D}${bindir} install -m 0755 ./react-wails-demo ${D}${bindir} cd ${OLDPWD} }
The above is the detailed content of Yocto cannot cross compile GoLang Wails application. For more information, please follow other related articles on the PHP Chinese website!