为了账号安全,请及时绑定邮箱和手机立即绑定

从 Ubuntu 20 为 Ubuntu 18 构建应用程序

从 Ubuntu 20 为 Ubuntu 18 构建应用程序

Go
叮当猫咪 2022-06-21 10:48:57
我在我的 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)当我在stackoverflow中搜索时,有人提到glibc 2.29在服务器上安装。但是其他人回答说这种方式有风险,可能会破坏操作系统。其他人建议使用glibc 2.27.我怎样才能做到这一点?
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

如何制作静态二进制文件主要取决于您的代码(或库)是否使用 cgo。

如果不需要 cgo,这很容易:只需使用环境变量禁用它:CGO_ENABLED。这将自动切换一些基于 cgo 的功能以使用纯 go 实现(netgoosusergo):

CGO_ENABLED=0 go build -o myApp

如果需要 cgo,您可以告诉链接器静态链接 C 代码,如下所示:

go build -ldflags="-extldflags=-static" -o myApp

请注意,并非所有 cgo 代码都会对此感到满意。如何解决它取决于使用的库。


查看完整回答
反对 回复 2022-06-21
  • 1 回答
  • 0 关注
  • 276 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号