You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

go build ./...执行无输出 单独构建子目录可生成二进制问题咨询

根本原因

这是go build命令的默认行为导致的,核心规则如下:

  • 当go build一次性指定多个包路径时(你的./...通配符匹配到了lib、./cmd/cli、./cmd/srv三个包),命令只会校验所有包的编译合法性,不会输出任何可执行二进制文件
  • 只有当go build单次指定唯一一个属于main包的路径时,才会在当前执行目录下生成对应名称的可执行文件
  • 你的lib目录属于共享库包(非main包),本身也不会生成可执行文件,即使单独构建也只会缓存编译结果到本地构建缓存,不会输出可见的二进制文件
为什么单独构建./cmd/cli正常

你执行go build ./cmd/cli时,单次只指定了一个main包,触发了go build输出可执行文件的逻辑,所以会在根目录生成cli二进制。

一次性生成两个可执行文件的方案

你可以用两种常用方式实现批量输出:

  • 方法1:使用go install ./...,编译后的cli、srv可执行文件会自动生成到$GOPATH/bin目录,如果你自定义了GOBIN环境变量则会输出到GOBIN指定路径
  • 方法2:使用脚本循环构建所有cmd下的main包,比如bash环境下执行如下命令即可直接在根目录生成两个可执行文件:
for pkg in ./cmd/*; do [ -d "$pkg" ] && go build "$pkg"; done

内容的提问来源于stack exchange,提问作者xakepp35

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:48:03