Go1.18 新特性:编译后的二进制文件,将包含更多信息
Posted 脑子进煎鱼了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go1.18 新特性:编译后的二进制文件,将包含更多信息相关的知识,希望对你有一定的参考价值。
大家好,我是煎鱼。
我有一个朋友,,开开心心入职,想着施展拳脚,第一个任务就是对老旧的二进制文件进行研究。
他一看,这文件,不知道是编译器用什么参数,是怎么编译出来的,环境不知道是什么,更不知道来自什么代码分支?
这除了是项目流程上的问题外,Go 在这块也有类似的小问题,处理起来比较麻烦。
来获取runtime/debug.modinfo
来获取关注到编译器选项,也就是参数等都是无法得知的,也就是会提高获取如何编译出来的难度。
达到一样的效果。在上面的输出中,现有的编译器选项等都会包含在内,能够让大家对整体编译后的二进制文件溯源有一个更好的认知。
总结在今天这篇文章中,给大家介绍了 Go1.18 的一个新的变化。
新版本中,编译器选项/参数、相关环境变量等,将会包含在编译后的二进制文件中,能够更便于后人排查和查看信息。
关注煎鱼,获取业内第一手消息和知识 go语言-关于文件的操作和解释
一、文件存放的位置
bin文件:存放编译后的二进制文件
pkg文件:存放编译后的库文件
src文件:存放源代码文件
二、运行文件的常用命令
两种运行区别(直接运行和编译后运行)
1、编译生成可执行文件,可以在没有go开发环境下运行
2、编译后的文件会变大很多,因为编译时会将运行的依赖库包含在文件中
3、直接运行,机器需要有go开发环境
直接运行程序:在终端输入go run 文件名.go
编译程序:go build
编译时修改文件名:go build -o 文件名.go
三、编译成linux文件
SET CGO_ENABLED=0 //禁用CGO
SET GOOS=LINUX //目标平台是linux
SET GOARCH=amd64 //目标处理器架构是amd64
以上是关于Go1.18 新特性:编译后的二进制文件,将包含更多信息的主要内容,如果未能解决你的问题,请参考以下文章
Go1.18 新特性:弃用 strings.Title 方法,换个新坑吧!