非零基础自学Golang 第15章 Go命令行工具 15.1 编译相关指令 15.1.3 install & 15.1.4 交叉编译

非零基础自学Golang

第15章 Go命令行工具

15.1 编译相关指令
15.1.3 install

go install命令的作用是编译后安装,该命令依赖于GOPATH,因此不能在独立的目录中使用该命令。

与go build不同的是,go install是将编译的中间件放到pkg目录下,将编译出来的可执行文件放到bin目录下。

使用动手写15.1.1和动手写15.1.2来运行go install命令。

C:\Users\admin\go\src\main>go install

在这里插入图片描述

OK,执行没报错

运行后,在目录C:\Users\admin\go\bin中就会生成可执行文件main.exe,由于这个包没有产生中间文件,因此在目录C:\Users\admin\go\pkg下就没有该包的pkg文件。

在这里插入图片描述

go install可以使用大部分go build的附加参数,由于go install的可执行文件的输出目录始终是GOPATH下的bin目录,因此不能使用-o参数指定输出的可执行文件名。

go install依旧可以使用-n参数来查看运行过程中该命令到底做了哪些事情。

C:\Users\admin\go\src\main>go install -n

在这里插入图片描述

在这里插入图片描述

可见,go install命令只是多了将可执行文件移动到bin目录下的动作。

15.1.4 交叉编译

交叉编译就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统。

举个例子,你使用Windows系统编写了一个Go语言程序,你的朋友想要在他的电脑上运行,可是他的电脑是Mac系统,又没有安装Go语言的编译器,这时你就可以在你的电脑上通过交叉编译的方式编译一个Mac系统可以直接运行的程序。

Go语言的交叉编译非常方便,只需在编译前设置一下Go的环境变量CGO_ENABLED、GOOS和GOARCH即可。

在Windows上编译Mac程序如下

# Windows下编译Mac
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go

其中GOOS为目标操作系统,GOARCH是目标操作系统的架构,CGO_ENABLED表示是否使用C语言版本的GO编译器,参数配置为0的时候就关闭C语言版本的编译器了。

【注意】

自从Golang 1.5以后,Go语言进行了自举,也就是Go语言编译器使用Go语言编写,而不再使用C语言。

【1】Windows下编译Linux

01 # Windows下编译Linux
02 SET CGO_ENABLED=0
03 SET GOOS=linux
04 SET GOARCH=amd64
05 go build main.go

【2】Mac下编译Linux、Windows

01 # Mac下编译Linux
02 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
03 
04 # Mac下编译Windows
05 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

【3】Linux下编译Mac、Windows

01 # Linux下编译Mac
02 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
03 
04 # Linux下编译Windows
05 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ding Jiaxiong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值