非零基础自学Golang 第15章 Go命令行工具 15.1 编译相关指令 15.1.3 install 15.1.4 交叉编译
创始人
2024-04-28 08:09:28

非零基础自学Golang

文章目录

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

第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

在这里插入图片描述

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...