发布于2026-07-06 阅读(0)
扫一扫,手机访问
在Ubuntu上用Go语言写项目,编译打包后生成的可执行文件到底跑哪去了?这是新手经常遇到的问题。其实答案并不复杂,取决于你用哪个命令、有没有加参数。
用go build编译时,如果没指定输出路径,可执行文件就直接生成在当前工作目录下,文件名默认和包目录名一致——比如你在项目根目录执行go build,出来的二进制就和项目目录同名。而用go install的话,二进制会被安装到$GOPATH/bin,前提是你没设置$GOBIN;如果设了,就进$GOBIN。
别急,我把最常见的几种情况整理成了表格,一眼就能看明白。

| 命令或用法 | 生成位置 | 示例 |
|---|---|---|
go build(无 -o) | 当前工作目录 | 在 /home/user/myapp 执行后生成 /home/user/myapp |
go build -o <路径/文件名> | 你指定的路径 | go build -o bin/myapp 生成项目根目录下的 bin/myapp |
go install | $GOPATH/bin 或 $GOBIN | 若 GOPATH=$HOME/go,则生成 $HOME/go/bin/ |
| 脚本或 Makefile 自定义 | 脚本中 -o 指定的目录 | 例如 Makefile 中 OUTPUT_NAME=myapp,BUILD_TARGET=$(PROJECT_PATH)/bin/$(OUTPUT_NAME),则生成项目根目录的 bin/myapp |
以上行为由 -o 参数与安装规则决定,脚本/Makefile 只是把路径固化。 | ||
如果你刚编译完,发现找不到文件在哪里,可以试试这几个方法:
pwd 看看当前工作目录;然后在当前目录下用 ls -l 查看有没有刚生成的可执行文件。go env GOPATH 拿到 $GOPATH,然后检查 $GOPATH/bin 里是否出现了你的二进制。sudo find / -type f -name "myapp" -executable 2>/dev/null(记得把 myapp 换成你实际生成的文件名)。掌握了位置规律,再来看几个常用命令,这样你就能灵活控制了:
go buildgo build -o bin/myappgo installCGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o dist/myappBUILD_TARGET=./bin/myapp 并执行 make build。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8