|
|
基础版本(推荐) CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o fibu.exe fibu2.go 极致压缩版本(使用 UPX) # 先安装 UPX sudo apt-get install upx # 编译 + 压缩 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o myapp.exe main.go upx --best myapp.exe # 体积可减少 50-70% 带版本信息的发布版本 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build \ -ldflags="-s -w -X main.Version=1.0.0 -X main.BuildTime=$(date +%Y%m%d)" \ -o myapp.exe main.go 验证静态链接 在 Ubuntu 上检查(使用 file 和 ldd) # 查看文件类型 file myapp.exe # 输出:myapp.exe: PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows # 检查依赖(静态编译应无外部依赖) # 注意:ldd 对 Windows exe 无效,需到 Windows 或用 wine 测试 在 Windows 上验证 打开 PowerShell 或 CMD:powershell # 查看依赖 dumpbin /dependents myapp.exe # 静态编译后应只显示:KERNEL32.dll 等系统核心 DLL # 或直接运行 myapp.exe |
// "github.com/ThomasRooney/gexpect" gexpect "github.com/google/goexpect" go mod tidy 剩下是修正对应的语法 |
|
推荐解决路径 首选:联系 gitee.com/tanpf/tools 维护者,建议替换为 github.com/google/goexpect(纯 Go) 次选:Fork 后自行修改,移除 expect 功能或使用条件编译 备选:如果 expect 是核心功能且必须保留,使用 mingw 编译并接受 DLL 依赖,或在 Linux 服务器端运行该功能 grep -r "gexpect" /ai/wks/gowks/src/tools/* go mod graph | grep gexpect |
# 安装 mingw-w64 sudo apt-get update sudo apt-get install mingw-w64 # 使用 mingw 编译(注意:生成的 exe 会依赖 libgcc.dll) CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOOS=windows GOARCH=amd64 \ go build -o fibu.exe fibu2.go 缺点:生成的 fibu.exe 需要携带 libgcc_s_seh-1.dll 和 libwinpthread-1.dll,不是纯静态 完全静态化(需额外参数): CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOOS=windows GOARCH=amd64 \ go build -ldflags="-s -w -linkmode external -extldflags '-static'" \ -o fibu.exe fibu2.go 带版本 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build \ -ldflags="-s -w -X main.Version=1.0.0 -X main.BuildTime=$(date +%Y%m%d)" \ -o myapp.exe main.go |
|
|
|
|
|
|