window golang源码编译-golang交叉编译

golang相对于c/c++的优点之一是更容易编译跨平台应用程序,无需为每个平台编写适配代码。 与JAVA相比,它对系统环境要求较低,不需要预装JDK等适配环境。

去建造

这里以frp项目的跨平台编译脚本为例

编译 linux/amd64 版本的应用程序:

window golang源码编译_源码编译器_源码编译器下载

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o frpc_linux_amd64 ./cmd/frpc

编译 windows/amd64 版本的应用程序:

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o ./frpc_windows_amd64.exe ./cmd/frpc

在linux上编译出windows的exe文件后,可以直接复制到windows机器上运行。

GOOS表示目标平台的操作系统。 GOARCH表示目标平台的架构,通常386表示32位系统,amd64表示64位系统。 可以通过go tool dist list查看支持的操作系统和对应的平台。

-s -w 是去掉编译时的符号信息和调试信息window golang源码编译,减少编译后的程序文件的大小,这个没有必要。 CGO_ENABLED=0可以禁用cgo编译,跨平台兼容性会更好。

限制代码仅在特定平台上编译

有时候我们总是想为不同平台的应用程序编写特殊的代码,这可以通过在Go文件中添加 //+build 注释来实现。

源码编译器下载_window golang源码编译_源码编译器

例如window golang源码编译,Go文件开头存在以下注释

// +构建 linux,386 darwin,!cgo

表示该文件仅在linux/386或darwin(No cgo)环境下编译。 在其他环境中该文件将不会被编译。

这样,我们就可以为不同的平台编写相同代码的不同实现。

其他注意事项