Heim >Backend-Entwicklung >Golang >Yocto kann die GoLang Wails-Anwendung nicht übergreifend kompilieren

Yocto kann die GoLang Wails-Anwendung nicht übergreifend kompilieren

WBOY
WBOYnach vorne
2024-02-05 22:21:12998Durchsuche

Yocto 无法交叉编译 GoLang Wails 应用程序

Frageninhalt

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}

}

Richtige Antwort


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&#160;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&#160;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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen