GO语言如何编译发布到Linux

GO语言如何编译发布到Linux,第1张

命令行执行如下指令带雹悉肆唤

SET CGO_ENABLED=0

SET GOOS=linux

SET GOARCH=amd64

go build main.go  //开始编译程蠢乎序

Go 语言和 C 语言的或散枯一个很大的区别是, Go 语言只静态衫洞编译,做个测试:

一方面是 Go 语言编译后的可执行文件大小比 C 语言的大很多,

另一方面掘咐是 C 语言的可执行文件需要依赖 glibc 动态库,

用 ldd 命令可以看出来:

或者直接删除 glibc 动态库, C 可执行程序报错,而 Go 的还能运行:

这时候只有内部命令可以运行,外部命令,包括 ln 甚至最常用的 ls 命令也不能运行了:

设置好 LD_PRELOAD 环境变量之后, ln 命令可以运行,但是 sudo 仍然不能运行

只能靠 root 用户来重新创建软连接了:

所以用 sudo 来 rm 文件要小心,还是用 root 比较好。如果没有预先留一个打开的 root 终端,登录都登不进去。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12372728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存