在1.20中发布的预览功能文件引导优化(PGO)功能,在1.21中正式启用。项目主包中存在efault.pgo中,go命令将会自动使用它来启用PGO构建。根据官方基准测试PGO 可以改善程序的性能,可以提高2-7%不等。而且所有工具都能实现向前和向后语言版本的兼容(关于兼容性问题,后面会讨论)。在更复杂的情况下,go build命令提...
1. 设置环境变量:在开始编译之前,首先需要设置 GOOS 和GOARCH 环境变量。例如,要为 Linux 64 位编译,可以使用命令 export GOOS=linux 和export GOARCH=amd64。 2. 编写代码:准备好你的 Go 代码,例如一个简单的 main.go 文件,其中包含了你的应用程序逻辑。 3. 进行编译:使用 go build 命令进行编译,同时指定...
GOOS与GOARCH GOOS的默认值是我们当前的操作系统, 如果windows,linux,注意mac os操作的上的值是darwin。 GOARCH 则表示CPU架构,如386,amd64,arm等。 获取GOOS和GOARCH的值 $ go env GOOS GOARCH GOOS和GOARCH的取值范围 GOOS和GOARCH的值成对出现,而且只能是下面列表对应的值。 $GOOS $GOARCH android arm ...
GOOS=windows GOARCH=amd64 go build 在Windows上需要使用SET命令, 例如在Windows上编译到Linux系统 SET GOOS=linux SET GOARCH=amd64 go build main.go 结语,学到了什么?还要学什么? 学到了什么? 快速简单搭建Go开发环境 导入包、申明包 func 定义函数 变量的申明方法 Go语言的异常处理 for循环 map类型 用ht...
GOARCH、GOOS、CGO和交叉编译 我创建CapsuleCD独立二进制文件的目的是要将端口启动到Golang上。但是,很明显,简单的静态二进制文件并不是Golang的内在特性。如果你的代码及其相关的依赖全部是用Golang写的,那么你可以用GOOS和GOARCH来构建静态二进制文件。但是,如果你像我一样不幸运,存在某个依赖需要在底层调用C代码...
GOOS指的是操作系统,例如 Linux、Windows、BSD 等,而GOARCH指的是要在哪种架构上构建程序。 $ env GOOS=linux GOARCH=arm64 go build -o prepnode_arm64 构建程序后,我重新运行file命令,这一次它显示的是 ARM AArch64,而不是之前显示的 x86。因此,我在我的笔记本上能为不同的架构构建二进制文件。
$ sudo CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 这里 额外多一个环境变量 CGO_ENABLED 是因为 交叉编译不支持 CGO,我们这里禁用它。 这里并不是重新编译Go,因为安装Go的时候,只是编译了本地系统需要的东西;而需要跨平台交叉编译,需要在Go中增加对其他平台的支持。所以,有 ./make.bash 这么一个...
SETCGO_ENABLED=0// 禁用CGOSETGOOS=linux// 目标平台是linuxSETGOARCH=amd64// 目标处理器架构是amd64go build 使用了cgo的代码是不支持跨平台编译的,然后再执行go build命令,得到的就是能够在Linux平台运行的可执行文件了。 Mac 下编译 Linux 和 Windows平台 64位 可执行程序: ...
GOARCH:386(go安装版本) GOBIN:D:\Program Files\go\bin(exe执行文件路径) GOOS:windows(go运行的系统) GOROOT:D:\Program Files\go(go的解压路径) GOPATH:E:\go\data(go的工具包路径,随意指定,后面会用到) 然后在path环境变量中追加:;%GOBIN% ...
cd/usr/local/go/srccd/usr/local/go/srcsudo CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 这里 额外多一个环境变量CGO_ENABLED 是因为 交叉编译不支持 CGO,我们这里禁用它。 这里并不是重新编译Go,因为安装Go的时候,只是编译了本地系统需要的东西;而需要跨平台交叉编译,需要在Go中增加对其他平台的...