DrM*_*eza 3 linux ubuntu glibc go cgo
我在我的 Ubuntu 20.04 操作系统中使用go build -o myApp.
当我在 Ubuntu Server 18.04 上运行此应用程序时,出现此错误:
/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by ./myApp)
Run Code Online (Sandbox Code Playgroud)
当我在 stackoverflow 中搜索时,有人提到glibc 2.29在服务器上安装。但其他人回答说这种方式有风险,可能会破坏操作系统。
其他人建议使用glibc 2.27.
我怎样才能做到这一点?
如何制作静态二进制文件主要取决于您的代码(或库)是否使用 cgo。
如果不需要 cgo,这很容易:只需使用环境变量禁用它:CGO_ENABLED。这将自动切换一些基于 cgo 的功能以使用纯 go 实现(netgo、osusergo):
CGO_ENABLED=0 go build -o myApp
Run Code Online (Sandbox Code Playgroud)
如果需要 cgo,您可以告诉链接器静态链接 C 代码,如下所示:
go build -ldflags="-extldflags=-static" -o myApp
Run Code Online (Sandbox Code Playgroud)
请注意,并非所有 cgo 代码都会对此感到满意。如何解决它取决于使用的库。
| 归档时间: |
|
| 查看次数: |
1438 次 |
| 最近记录: |