go build命令

执行go build命令后会进行以下步骤:

1.编译(compile 将代码翻译成二进制机器码) 它会读取你的 .go 源代码文件(例如 main.go 和 animal 包里的所有文件)。 它会检查代码的语法是否正确。 它会将人类可读的 Go 代码转换成机器可以执行的二进制机器码(生程目标文件.obj)。

2.链接(link) 编译得到的二进制机器码还不完整(比如在main.go对应的二进制码中,调用别的函数的地方留下一个占位符,这个占位符的大致意思是说,嘿,链接器,请在这里填上被调用的xxx函数的真正地址),如果直接运行这个编译后的二进制机器码,程序执行到这个调用时,它会发现一个无法跳转的空白地址,然后崩溃。它缺少了所有跨文件、跨包调用的内存地址。 不仅不完整,而且是乱序的,对单个文件而言,其编译后形成的机器码不是乱序的,但是从整个项目来看就是乱序,编译完成后,你得到的是一堆独立的目标文件的,就像一堆散落在桌面上的章节册子,还没有按照最终的顺序(1, 2, 3...)排列起来。main 包是程序的入口,它应该是"第一章",但此时它和其他章节是平等的,没有谁先谁后。

3.生成可执行文件 最终,go build后会在当前目录下生成一个可执行文件 在windows系统上,它会生成一个 .exe 文件,例如 项目名.exe 在macos系统或者linux系统上生成和项目同名的

go run和go build的区别:

go run 会 编译并立即运行 你的程序,但它 不会在你的项目目录里留下可执行文件。 go build: 这个命令 只编译,不运行。它会生成一个持久的可执行文件,你可以随时运行它,或者把它部署到服务器上。

相关推荐
数据知道2 小时前
Go语言:Go 语言中的命令行参数操作详解
开发语言·后端·golang·go语言
代码匠心2 小时前
从零开始学Flink:实时流处理实战
java·大数据·后端·flink
hui函数2 小时前
Python全栈(基础篇)——Day05:后端内容(dict与set+while循环+for循环+实战演示+每日一题)
开发语言·后端·python
Apifox.3 小时前
Apifox 9 月更新| AI 生成接口测试用例、在线文档调试能力全面升级、内置更多 HTTP 状态码、支持将目录转换为模块
前端·人工智能·后端·http·ai·测试用例·postman
绝无仅有3 小时前
消息队列mq面试经典问题与解答总结
后端·面试·github
绝无仅有4 小时前
数据库mysql报错追踪与解决总结
后端·面试·github
Codelinghu4 小时前
快速入门SpringAI-SpringAI Alibaba实战
后端
ZhengEnCi4 小时前
@Component 注解完全指南-从入门到精通的 Spring 核心组件管理
spring boot·后端
Penge6664 小时前
MySQL-隐式类型转换的 “隐形陷阱”
后端·mysql