Heim >Backend-Entwicklung >Golang >Yocto kann die GoLang Wails-Anwendung nicht übergreifend kompilieren
Ich verwende Yocto Kirkstone, um ein benutzerdefiniertes eingebettetes Linux-Board-Build-System für Armv7 zu erstellen. Ich habe Go-Runtime-Version 1.20 in meinem Yocto-Metalayer.
Ich versuche, eine einfache Beispiel-Golang-„Wails“-App (https://github.com/wailsapp/wails) zu erstellen, die ich auf einem Mac für mein Ziel erstellen kann. Dies erfordert die Installation von wails „cli“, um die Anwendung zu erstellen. Ich weiß nicht, wie ich diese Anwendung mit Yocto kompilieren soll. Wie kann ich das machen? Danke.
Dieser Befehl schlägt in do_compile() fehl:
wails build .
Der Fehler, den ich erhalten habe, sieht so aus:
... | 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-Rezept:
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} }
Ich habe dieses Problem mit der folgenden Methode gelöst.
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} }
Das obige ist der detaillierte Inhalt vonYocto kann die GoLang Wails-Anwendung nicht übergreifend kompilieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!