很多人在 CentOS 上第一次执行 go build 时,都会先去别的目录找生成文件。其实 Go 的默认行为并不复杂:先看当前工作目录,再根据是否使用 -o 判断输出位置。下面直接按“默认输出”和“自定义输出”两种情况说明。
默认会生成到哪里
如果直接执行:
go build main.go
默认会在当前工作目录下生成可执行文件,通常文件名是 main。这也是很多人在 CentOS 里最容易忽略的一点:编译结果并不会自动跑到别的构建目录,而是直接出现在你执行命令的位置。
如果是 Windows,生成的文件则会带上 .exe 后缀,也就是 main.exe。
想放到指定目录怎么办
如果你不想让可执行文件留在当前目录,可以用 -o 指定输出路径,例如:
go build -o /path/to/your/output/main main.go
这样生成的文件就会被写入 /path/to/your/output/,文件名为 main。这个方式适合把构建产物统一放到部署目录、脚本目录或单独的 bin 目录中。
使用 -o 时要注意什么
需要先确认目标目录有写入权限。若目录不存在,或者当前用户无权写入,`go build` 会直接报错,文件也不会成功生成。
因此,判断 Go 打包后的文件在哪,核心就看两点:是否用了 -o,以及命令是在哪个目录下执行的。








