ENV CGO_ENABLED=1 和 ENV CGO_ENABLED=0 什么区别?
CGO_ENABLED
是一个环境变量,用于控制 Go 是否启用 CGO。
CGO 是 Go 语言的一个特性,它允许 Go 代码调用 C 语言代码。这在一些情况下是非常有用的,例如当你需要使用一些只有 C 语言接口的库时。
CGO_ENABLED=1
表示启用 CGO,CGO_ENABLED=0
表示禁用 CGO。
如果你的代码需要使用 CGO(例如,如果你需要使用 github.com/google/brotli/go/cbrotli
这个库,它需要 CGO),那么你需要设置 CGO_ENABLED=1
。
然而,启用 CGO 会使你的程序变得更复杂,因为你需要处理 C 语言的编译和链接。此外,启用 CGO 也会使你的程序无法跨平台编译(因为 C 语言代码通常是平台相关的)。因此,如果你的代码不需要 CGO,那么你应该设置 CGO_ENABLED=0
。