Maison > Article > développement back-end > Yocto ne peut pas compiler de manière croisée l'application GoLang Wails
J'utilise yocto kirkstone pour créer un système de construction de carte Linux intégré personnalisé pour armv7. J'ai la version 1.20 de Go-Runtime dans mon métalayer yocto.
J'essaie de créer un exemple simple d'application Golang "wails" (https://github.com/wailsapp/wails) que je peux créer sur un Mac pour ma cible. Cela nécessite que wails 'cli' soit installé pour construire l'application. Je ne sais pas comment compiler cette application avec yocto. Comment puis-je faire ceci? Merci.
Cette commande échoue dans do_compile() :
wails build .
L'erreur que j'ai reçue ressemble à ceci :
... | 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
recette bitbake :
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} }
J'ai résolu ce problème en utilisant la méthode suivante.
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} }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!