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: 这个命令 只编译,不运行。它会生成一个持久的可执行文件,你可以随时运行它,或者把它部署到服务器上。

相关推荐
我命由我123455 小时前
Java 泛型 - Java 泛型通配符(上界通配符、下界通配符、无界通配符、PECS 原则)
java·开发语言·后端·java-ee·intellij-idea·idea·intellij idea
szhf785 小时前
SpringBoot Test详解
spring boot·后端·log4j
无尽的沉默5 小时前
SpringBoot整合Redis
spring boot·redis·后端
摸鱼的春哥5 小时前
春哥的Agent通关秘籍07:5分钟实现文件归类助手【实战】
前端·javascript·后端
Victor3565 小时前
MongoDB(2)MongoDB与传统关系型数据库的主要区别是什么?
后端
JaguarJack5 小时前
PHP 应用遭遇 DDoS 攻击时会发生什么 从入门到进阶的防护指南
后端·php·服务端
BingoGo5 小时前
PHP 应用遭遇 DDoS 攻击时会发生什么 从入门到进阶的防护指南
后端
Victor3565 小时前
MongoDB(3)什么是文档(Document)?
后端
牛奔7 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
不老刘11 小时前
LiveKit 本地部署全流程指南(含 HTTPS/WSS)
golang·实时音视频·livekit