Debian Golang编译后如何运行
在Debian系统安装Golang环境,编写代码后用gobuild编译生成可执行文件,通过./运行。可处理权限、端口、依赖问题,并配置systemd实现开机自启动。
在Debian系统上编译并运行Golang程序,其实比很多人想象的要简单。只要走对几个关键步骤,整个过程流畅得就像流水线作业。下面就把这些环节拆开来讲清楚。
1. 准备工作:安装Golang环境
一切的前提是系统里得先有Go。用Debian自带的包管理器就能搞定,终端里执行这两条命令即可:

sudo apt update
sudo apt install golang-go
装完之后,跑一下 go version 验证一下。如果看到类似 go version go1.20.3 linux/amd64 的输出,说明环境已经就绪。
2. 编写Golang代码
环境有了,接下来就该写代码了。创建一个项目目录,比如叫 hello,然后在里面写一个 main.go 文件:
mkdir hello && cd hello
nano main.go
把下面这段最简单的“Hello, World!”程序贴进去:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
保存退出,代码部分就完成了。
3. 编译Golang程序
回到项目目录,直接执行 go build,Go编译器会自动生成一个与目录名同名的可执行文件:
go build
如果你想换个名字,比如叫 myapp,用 -o 参数指定就行:
go build -o myapp
编译成功后,当前目录下就会出现这个可执行文件,比如 myapp 或 hello。
4. 运行编译后的程序
运行起来也很直白,./ 加上文件名即可:
./myapp
# 若未自定义文件名,则为./hello
终端会立刻打印出程序结果,比如 Hello, World!。
5. 可选步骤:解决常见问题
实际跑的时候可能会遇到几个小坑,这里提前列出来,免得你临时抓瞎。
- 权限问题:如果报了“Permission denied”,说明文件没有执行权限。加一个可执行权限就好:
chmod +x myapp - 端口占用:如果你的程序是个Web应用,比如监听8080端口,记得检查防火墙有没有放行:
sudo ufw allow 8080 - 依赖管理:程序里用了第三方库的话,编译之前要先通过
go get安装依赖,比如go get github.com/gin-gonic/gin。
6. 可选步骤:开机自启动(生产环境常用)
如果你希望Golang程序在系统启动后自动运行,用 systemd 创建一个服务是最靠谱的办法。步骤也不复杂:
- 新建服务文件:
sudo nano /etc/systemd/system/myapp.service - 填入以下内容(注意把
myuser替换成你的实际用户名,/home/myuser/hello换成你的实际程序路径):[Unit] Description=My Golang Application After=network.target [Service] User=myuser Group=myuser WorkingDirectory=/home/myuser/hello ExecStart=/home/myuser/hello/myapp Restart=always [Install] WantedBy=multi-user.target - 启用并启动服务:
sudo systemctl enable myapp.service sudo systemctl start myapp.service
接下来,程序就会在每次开机时自动跑起来。想查看运行状态,用 systemctl status myapp.service 就行了。
以上就是Debian系统下Golang的编译运行全流程。大部分场景只要做到第4步就够用了,生产环境再根据需求选配端口开放和自启动。整个过程清晰干脆,照着走一遍就能跑通。


































