老哥们, win10 下 Go 怎么编译

2021-03-29 16:33:48 +08:00
 ouyc
在 Linux 上用了 make 编译,不知道 win10 有没有类似的比较流行的。排除 maven 、gradle 、ant 这些要 Java 的。最好只要 Go 的
4150 次点击
所在节点    Go 编程语言
37 条回复
zpfhbyx
2021-03-29 16:36:02 +08:00
docker ?
cheneydog
2021-03-29 16:38:35 +08:00
goland + gomod
ouyc
2021-03-29 16:47:47 +08:00
我用了 grpc,有编译 .proto 文件的需求,所以想找一个在 win10 下执行脚本的,做好能跨平台
@zpfhbyx 主要在开发时使用的能一键编译的
@cheneydog 有用 gomod
2379920898
2021-03-29 17:05:46 +08:00
bee run 原生 就 go build
zhengxiaowai
2021-03-29 17:11:57 +08:00
go build ?????没懂楼主的意思。。
交叉编译的话可以指定 GOARCH
raaaaaar
2021-03-29 17:13:23 +08:00
我也没懂,go build 不行吗?
huobazi
2021-03-29 17:14:57 +08:00
wsl 里玩呗
ouyc
2021-03-29 17:30:09 +08:00
@huobazi 真就 Linux 了,老哥们有没有用过 Win10 做个 Go 语言的开发
XIU2
2021-03-29 17:30:35 +08:00
Golang ?我都是直接写个简单的 bat 脚本,自动配置临时环境变量来编译不同平台 /系统的二进制版本。

脚本内容示例(只写了两个,其他平台 /系统同理):

@echo off
set version=v1.0.0
cd ..

echo "ABC_linux_386..."
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=386
go build -o Releases\ABC_linux_386 -ldflags "-s -w -X main.version=%version%"

echo "ABC_windows_amd64..."
SET CGO_ENABLED=0
SET GOOS=windows
SET GOARCH=amd64
go build -o Releases\ABC_windows_amd64.exe -ldflags "-s -w -X main.version=%version%"

如果是文件夹的话,再搭配一个自动压缩包的脚本就行了(或者合并到一个脚本中)。

脚本中的 main.version=%version% 是编译时写入版本号,可以删除。
selfeasy
2021-03-29 17:33:27 +08:00
makefile 中的命令 一条一条的在编辑器控制台执行
noroot
2021-03-29 17:37:13 +08:00
make 是自动化构建工具,不是编译器。
go 现在用 go mod 管理依赖,go build 执行构建。
所以你的需求是什么?
XIU2
2021-03-29 17:38:57 +08:00
刚回复完就看到你刚发的附言。。。

我只是业余自学自给自足写一些小软件,没折腾过依赖多的项目,所以你的需求我也不懂~
Jirajine
2021-03-29 17:39:55 +08:00
go 本身的工具链比较完善,make 也就用来方便一下多平台构建、定义常量等情况,所以 Windows 下继续使用 make 也完全没问题。
thevita
2021-03-29 17:40:17 +08:00
你需要的是 `go generate`
JackyCDK
2021-03-29 17:41:35 +08:00
使用 wsl2 (混乱邪恶
thevita
2021-03-29 17:41:58 +08:00
硬要用 make 的话, ms 的工具链里有 nmake, 不过要单独安装
BeautifulSoap
2021-03-29 17:42:00 +08:00
lz 你这个需求,不是很复杂的话,为什么不考虑使用 go generate 呢?

如果需求复杂的话其实还不如用 docker,因为你同时维护两个平台的 makefile 是非常耗费心智的

当然,一定想在 windows 下用 make 的话,其实方法也很多,但是核心还是在于,不同平台你的的编译指令会有区别,到头来你还是会回到上面说的维护两个平台各自的 makefile 上了
HanMeiM
2021-03-29 17:52:59 +08:00
我也没懂,意思是 go 在 windows 上还不能直接跑 go build ?
zliea
2021-03-29 18:15:19 +08:00
cygwin/mingw ?
thet
2021-03-29 18:31:49 +08:00
go build

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/766206

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX