Add Windows build support and fix Windows compatibility issues- Add build-windows.ps1 PowerShell script for Windows builds- Add BUILD-WINDOWS.md documentation for Windows users - Update build.sh to include Windows AMD64 and .exe extensions- Fix util/util.go Windows path handling (use filepath instead of path)- Fix error logging format (%v instead of %w)- Support Windows AMD64, 386, and ARM64 architectures
This commit is contained in:
87
BUILD-WINDOWS.md
Normal file
87
BUILD-WINDOWS.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# Building Geek-life for Windows
|
||||
|
||||
This document explains how to build and run Geek-life on Windows systems.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Go 1.14 or later installed on your system
|
||||
- PowerShell (comes with Windows)
|
||||
|
||||
## Building the Application
|
||||
|
||||
### Option 1: Using the Windows Build Script (Recommended)
|
||||
|
||||
Run the PowerShell build script to build for all Windows architectures:
|
||||
|
||||
```powershell
|
||||
.\build-windows.ps1
|
||||
```
|
||||
|
||||
This will create optimized executables for:
|
||||
- Windows AMD64 (64-bit) - `geek-life_windows-amd64.exe`
|
||||
- Windows 386 (32-bit) - `geek-life_windows-386.exe`
|
||||
- Windows ARM64 - `geek-life_windows-arm64.exe`
|
||||
|
||||
### Option 2: Manual Build
|
||||
|
||||
For a simple build without optimization:
|
||||
```powershell
|
||||
go build -o builds/geek-life.exe ./app
|
||||
```
|
||||
|
||||
For an optimized build (smaller file size):
|
||||
```powershell
|
||||
$env:GOOS="windows"
|
||||
$env:GOARCH="amd64"
|
||||
go build -ldflags="-s -w" -o builds/geek-life_windows-amd64.exe ./app
|
||||
```
|
||||
|
||||
## Running the Application
|
||||
|
||||
After building, you can run the application:
|
||||
|
||||
```powershell
|
||||
# For the optimized AMD64 version (recommended for most users)
|
||||
.\builds\geek-life_windows-amd64.exe
|
||||
|
||||
# For 32-bit systems
|
||||
.\builds\geek-life_windows-386.exe
|
||||
|
||||
# For ARM64 systems
|
||||
.\builds\geek-life_windows-arm64.exe
|
||||
```
|
||||
|
||||
## Command Line Options
|
||||
|
||||
```powershell
|
||||
.\builds\geek-life_windows-amd64.exe --help
|
||||
```
|
||||
|
||||
Available options:
|
||||
- `-d, --db-file string`: Specify DB file path manually
|
||||
|
||||
## File Structure
|
||||
|
||||
The main entry point is located in `app/cli.go` (not in a traditional `main.go` file at the root).
|
||||
|
||||
## Build Optimization
|
||||
|
||||
The build script uses the following optimization flags:
|
||||
- `-ldflags="-s -w"`: Strips debug information and symbol table to reduce file size
|
||||
- Results in approximately 30% smaller executable files
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
1. **"go: command not found"**: Make sure Go is installed and added to your PATH
|
||||
2. **Permission denied**: Run PowerShell as Administrator if needed
|
||||
3. **Execution policy**: If you can't run the build script, run: `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser`
|
||||
|
||||
## Cross-compilation from Other Platforms
|
||||
|
||||
You can also build Windows executables from Linux/macOS:
|
||||
|
||||
```bash
|
||||
# From Linux/macOS
|
||||
env GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o builds/geek-life_windows-amd64.exe ./app
|
||||
env GOOS=windows GOARCH=386 go build -ldflags="-s -w" -o builds/geek-life_windows-386.exe ./app
|
||||
```
|
||||
Reference in New Issue
Block a user