Ubuntu Golang打包生成的文件在哪里
作者:WeekendFlower
时间:2026-07-06
浏览:0
在Ubuntu上使用Go编译,可执行文件位置取决于命令和参数。`gobuild`不带`-o`则生成在当前工作目录,文件名与包名一致;`goinstall`生成在`$GOPATH/bin`或`$GOBIN`;`-o`可指定任意路径。通过`ls`、`goenvGOPATH`或`find`可快速定位。
在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 的安装路径和二进制目录:执行
go env GOPATH拿到$GOPATH,然后检查$GOPATH/bin里是否出现了你的二进制。 - 实在找不到,就用全局搜索:
sudo find / -type f -name "myapp" -executable 2>/dev/null(记得把myapp换成你实际生成的文件名)。
常用命令示例
掌握了位置规律,再来看几个常用命令,这样你就能灵活控制了:
- 在当前目录生成二进制:
go build - 指定输出目录与名称:
go build -o bin/myapp - 安装到 GOPATH/bin:
go install - 交叉编译 Linux amd64 并输出到指定目录:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o dist/myapp - 使用 Makefile 输出到项目 bin 目录:在 Makefile 中设定
BUILD_TARGET=./bin/myapp并执行make build。
作者最新文章
赤友清理大师
2026-09-16 17:43
南邮光擎智算团队:GaN基Micro-LED光计算芯片从理论到流片的突破
2026-09-08 18:35
多张照片怎么合成PDF文件?三种图片转PDF工具怎么选?
2026-09-03 17:04
Excel转PDF防乱版指南:在线与本地双方案及排版检查
2026-09-03 10:04
多个PDF怎么合并成一个?合并后顺序怎么检查?
2026-09-02 19:54
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































