Jump to content

Go

From Smithnet Wiki
Revision as of 09:03, 3 March 2026 by NickPGSmith (talk | contribs) (Windows Executables with winres)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Building and Packages

go run test.go
go build test.go

If there are multiple files in the main package, must make go access all of them:

go run .
go build .

To remove debug symbols:

go build -ldflags="-s -w" .

In multi-file projects, main.go is the convention. The binary name is taken from the project directory.

gofmt -w .
gofmt -d test.go

Initialise project, create go.mod file:

go mod init example-project

Download, and add reference to go.mod file:

go get github.com/alexflint/go-arg

Ensure go.mod is in sync with code imports:

go mod tidy

Note the go.sum file that contains anti-tampering checksums.

To cross compile:

GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -trimpath -o disco_scan_updater
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -trimpath -o disco_scan_updater.exe

Show available platforms:

go tool dist list

Windows Executables with winres

To add icons and version details:

go install github.com/tc-hib/go-winres@latest
~/go/bin/go-winres init

Add resources:

  • Edit winres/winres.json (icon reference: RT_GROUP_ICON)
  • Add winres/icon.png (s single high resolution PNG will be rescaled automatically

Make syso resources, and build into binary:

~/go/bin/go-winres make
go build

Useful Packages