温馨提示×

golang依赖debian什么库

小樊
38
2026-10-05 05:22:05
栏目: 编程语言

Go(Golang)在 Debian / Ubuntu 上运行时,通常只需要很少的系统库,但在编译或静态/动态链接特定功能时会依赖一些 Debian 包。

下面按“运行时 / 编译时 / 特殊情况”来说明。


一、Go 程序运行时的依赖(最常见)

如果是 纯 Go 程序(静态编译):

ldd your_go_binary
# 输出通常是:not a dynamic executable

✅ 几乎不依赖任何 Debian 库

但如果是 动态链接(比如用了 cgo),通常会依赖:

1. 基础 C 库

libc6

2. 线程支持

libpthread

(包含在 libc6 中)

3. 动态链接器

libdl

二、安装 Go 编译器需要的 Debian 包

方式一:用 apt 安装

sudo apt install golang-go

会依赖:

gcc
libc6-dev
binutils

方式二:官方二进制(推荐)

# 从 go.dev 下载

✅ 不依赖 apt 包,几乎零系统依赖


三、使用 cgo 时需要的库

如果你的 Go 代码里用了:

import "C"

那你需要:

gcc
libc6-dev
pkg-config

常见依赖:

libc6-dev
libpthread-stubs0-dev

四、常见功能对应的 Debian 库

Go 功能 Debian 依赖
网络 DNS libc(默认)
SQLite libsqlite3-dev
OpenSSL / TLS libcrypto / libssl-dev
PostgreSQL libpq-dev
MySQL libmysqlclient-dev
图形 GUI libx11-dev 等
系统调用 libc6

五、最小 Debian 运行环境(容器常用)

FROM debian:stable-slim
COPY app /app
CMD ["/app"]

✅ 不需要 apt install 任何库(静态编译)


六、查看某个 Go 程序依赖了什么

ldd your_binary

或:

readelf -d your_binary

总结一句话

Go 本身几乎不依赖 Debian 库;只有用 cgo 或调用 C 库时才需要 libc / gcc / 对应 dev 包。

如果你有具体场景(比如:Docker、CGO、SQLite、TLS),我可以给你精确依赖列表。

0 踩