temporary test for understanding making a cross-compile go program.
cmd/app | ||
pkg/mypkg | ||
go.mod | ||
README.md |
Go Crosscompile
Explanation
symbol() function in pkg/mypkg/symbol_linux.go and symbol_windows.go is different. When running and building program, GOOS choses right one. for more information run these in cmd/app/ directory:
go build .
./app
# Output:
#1+2=linux
#a/b/c
env GOOS=windows GOARCH=amd64 go build .
./app.exe
# Output:
# -Some random wine logs if running on linux with wine-
#1-2=windows
#a\b\c
file app*
# see information about executables
HELP NEEDED
VSCode gives redecleration error when using same name as function names. How to solve this? maybe see https://github.com/golang/go/issues/29202 ?
Before trying
- make sure you have installed wine in your linux system
- or use a windows system too
Resources
- https://www.digitalocean.com/community/tutorials/customizing-go-binaries-with-build-tags
- https://www.digitalocean.com/community/tutorials/building-go-applications-for-different-operating-systems-and-architectures
- https://www.digitalocean.com/community/tutorials/how-to-build-go-executables-for-multiple-platforms-on-ubuntu-20-04
- https://opensource.com/article/21/1/go-cross-compiling