wailsapp / wails

Create beautiful applications using Go
https://wails.io
MIT License
24.68k stars 1.18k forks source link

wails build arm64 fail #3559

Closed huwei14 closed 3 months ago

huwei14 commented 3 months ago

Description

I can't build a linux/arm64 app in my amd64 Ubuntu

I installed aarch64-linux-gnu in my Ubuntu and try different commands, like "wails build -platform linux/arm64"、 "GOARCH=arm64 CC=aarch64-linux-gnu-gcc wails build -platform linux/arm64" 、 "GOARCH=arm64 CC=aarch64-linux-gnu-gcc go build -tags desktop,production -ldflags "-w -s" "

please help thx

To Reproduce

  1. when i run "wails build -platform linux/arm64" ,the terminal show :
    
    Wails CLI v2.9.1

Build Options

Platform(s) | linux/arm64
Compiler | /usr/local/go/bin/go
Skip Bindings | false
Build Mode | production
Devtools | false
Frontend Directory | /home/huwei/workspaces/test-rtsp-mse/frontend Obfuscated | false
Skip Frontend | false
Compress | false
Package | true
Clean Bin Dir | false
LDFlags |
Tags | []
Race Detector | false

Building target: linux/arm64

• Generating bindings: Done. • Installing frontend dependencies: Done. • Compiling frontend: Done. • Compiling application: # runtime/cgo gcc_arm64.S: Assembler messages: gcc_arm64.S:30: Error: no such instruction: stp x29,x30,[sp,' gcc_arm64.S:34: Error: too many memory references formov' gcc_arm64.S:36: Error: no such instruction: stp x19,x20,[sp,' gcc_arm64.S:39: Error: no such instruction:stp x21,x22,[sp,' gcc_arm64.S:42: Error: no such instruction: stp x23,x24,[sp,' gcc_arm64.S:45: Error: no such instruction:stp x25,x26,[sp,' gcc_arm64.S:48: Error: no such instruction: stp x27,x28,[sp,' gcc_arm64.S:52: Error: too many memory references formov' gcc_arm64.S:53: Error: too many memory references for mov' gcc_arm64.S:54: Error: too many memory references formov' gcc_arm64.S:56: Error: no such instruction: blr x20' gcc_arm64.S:57: Error: no such instruction:blr x19' gcc_arm64.S:59: Error: no such instruction: ldp x27,x28,[sp,' gcc_arm64.S:62: Error: no such instruction:ldp x25,x26,[sp,' gcc_arm64.S:65: Error: no such instruction: ldp x23,x24,[sp,' gcc_arm64.S:68: Error: no such instruction:ldp x21,x22,[sp,' gcc_arm64.S:71: Error: no such instruction: ldp x19,x20,[sp,' gcc_arm64.S:74: Error: no such instruction:ldp x29,x30,[sp],' ERROR exit status 1

ERROR exit status 1 ♥ If Wails is useful to you or your company, please consider sponsoring the project: https://github.com/sponsors/leaanthony


2. when i run "GOARCH=arm64 CC=aarch64-linux-gnu-gcc wails build -platform linux/arm64"  ,the terminal show :    

Wails CLI v2.9.1

Build Options

Platform(s) | linux/arm64
Compiler | /usr/local/go/bin/go
Skip Bindings | false
Build Mode | production
Devtools | false
Frontend Directory | /home/huwei/workspaces/test-rtsp-mse/frontend Obfuscated | false
Skip Frontend | false
Compress | false
Package | true
Clean Bin Dir | false
LDFlags |
Tags | []
Race Detector | false

Building target: linux/arm64

• Generating bindings: ERROR

      fork/exec /tmp/wailsbindings: exec format error

ERROR

      fork/exec /tmp/wailsbindings: exec format error

♥ If Wails is useful to you or your company, please consider sponsoring the project: https://github.com/sponsors/leaanthony


3. when i run "GOARCH=arm64 CC=aarch64-linux-gnu-gcc go build -tags desktop,production -ldflags "-w -s"  "  ,the terminal show :      

github.com/wailsapp/wails/v2/internal/frontend/desktop/linux

../../go/pkg/mod/github.com/wailsapp/wails/v2@v2.9.1/internal/frontend/desktop/linux/browser.go:9:10: undefined: Frontend ../../go/pkg/mod/github.com/wailsapp/wails/v2@v2.9.1/internal/frontend/desktop/linux/single_instance.go:40:4: undefined: secondInstanceBuffer


### Expected behaviour

i  expected  build a arm64 app  success  

### Screenshots

_No response_

### Attempted Fixes

_No response_

### System Details

```shell
# Wails
Version         | v2.9.1
Package Manager | apt   

# System
┌───────────────────────────────────────────────────────┐
| OS           | Ubuntu                                 |
| Version      | 22.04                                  |
| ID           | ubuntu                                 |
| Go Version   | go1.22.4                               |
| Platform     | linux                                  |
| Architecture | amd64                                  |
| CPU          | AMD Ryzen 7 2700X Eight-Core Processor |
| Memory       | 10GB                                   |
└───────────────────────────────────────────────────────┘

# Dependencies
┌──────────────────────────────────────────────────────────────────────────┐
| Dependency | Package Name          | Status    | Version                 |
| *docker    | docker.io             | Available | 24.0.7-0ubuntu2~22.04.1 |
| gcc        | build-essential       | Installed | 12.9ubuntu3             |
| libgtk-3   | libgtk-3-dev          | Installed | 3.24.33-1ubuntu2.1      |
| libwebkit  | libwebkit2gtk-4.0-dev | Installed | 2.44.2-0ubuntu0.22.04.1 |
| npm        | npm                   | Installed | 10.7.0                  |
| *nsis      | nsis                  | Available | 3.08-2                  |
| pkg-config | pkg-config            | Installed | 0.29.2-1ubuntu3         |
└──────────────────────── * - Optional Dependency ─────────────────────────┘

# Diagnosis
Optional package(s) installation details: 
  - docker: sudo apt install docker.io
  - nsis: sudo apt install nsis

 SUCCESS  Your system is ready for Wails development!

 ♥   If Wails is useful to you or your company, please consider sponsoring the project:

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) 

$ aarch64-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/aarch64-linux-gnu/11/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --without-target-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=aarch64-linux-gnu --program-prefix=aarch64-linux-gnu- --includedir=/usr/aarch64-linux-gnu/include --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) 

-----------------------------------------------------------------------------

and my arm64 device info is :
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/11/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)

Additional context

No response

huwei14 commented 3 months ago

I build success when I run "CGO_ENABLED=1 GOARCH=arm64 CC=aarch64-linux-gnu-gcc go build -tags desktop,production -ldflags "-w -s" "

when I see “ ···/bin/ld: cannot find -l·······” I copy all files in /lib/aarch64-linux-gnu from my aarch64 device system to my Ubuntu

but "wails build -platform linux/arm64" still fail

leaanthony commented 3 months ago

Seems like there might be some installation issue with the cross compiler.

huwei14 commented 3 months ago

I build success by use “CGO_ENABLED=1 GOARCH=arm64 CC=aarch64-linux-gnu-gcc wails build -skipbindings ”