Go(Golang)在 Debian / Ubuntu 上运行时,通常只需要很少的系统库,但在编译或静态/动态链接特定功能时会依赖一些 Debian 包。
下面按“运行时 / 编译时 / 特殊情况”来说明。
如果是 纯 Go 程序(静态编译):
ldd your_go_binary
# 输出通常是:not a dynamic executable
✅ 几乎不依赖任何 Debian 库
但如果是 动态链接(比如用了 cgo),通常会依赖:
libc6
libpthread
(包含在 libc6 中)
libdl
sudo apt install golang-go
会依赖:
gcc
libc6-dev
binutils
# 从 go.dev 下载
✅ 不依赖 apt 包,几乎零系统依赖
如果你的 Go 代码里用了:
import "C"
那你需要:
gcc
libc6-dev
pkg-config
常见依赖:
libc6-dev
libpthread-stubs0-dev
| Go 功能 | Debian 依赖 |
|---|---|
| 网络 DNS | libc(默认) |
| SQLite | libsqlite3-dev |
| OpenSSL / TLS | libcrypto / libssl-dev |
| PostgreSQL | libpq-dev |
| MySQL | libmysqlclient-dev |
| 图形 GUI | libx11-dev 等 |
| 系统调用 | libc6 |
FROM debian:stable-slim
COPY app /app
CMD ["/app"]
✅ 不需要 apt install 任何库(静态编译)
ldd your_binary
或:
readelf -d your_binary
Go 本身几乎不依赖 Debian 库;只有用 cgo 或调用 C 库时才需要 libc / gcc / 对应 dev 包。
如果你有具体场景(比如:Docker、CGO、SQLite、TLS),我可以给你精确依赖列表。