• 注册
    • 查看作者
    • go语言build平台支持编译打包脚本

      go语言build平台支持编译打包脚本

      GO_ENABLED=0 GOOS=windows GOARCH=386 go build -ldflags "-s -w" -o xxxxx-windows-386-1.0.exe  main.go
      GO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o xxxxx-windows-amd64-1.0.exe  main.go
      GO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o xxxxx-linux-amd64-1.0  main.go
      GO_ENABLED=0 GOOS=linux GOARCH=386 go build -o xxxxx-linux-386-1.0  main.go
      GOARM=5 GOARCH=arm GOOS=linux go build -ldflags "-w -s" -o xxxxx-linux-armv5-1.0  main.go
      GOARM=6 GOARCH=arm GOOS=linux go build -ldflags "-w -s" -o xxxxx-linux-armv6-1.0  main.go
      GOARM=7 GOARCH=arm GOOS=linux go build -ldflags "-w -s" -o xxxxx-linux-armv7-1.0  main.go
      GOARM=8 GOARCH=arm GOOS=linux go build -ldflags "-w -s" -o xxxxx-linux-armv8-1.0  main.go
      
      xxxxx-darwin-amd64-2.10.1.gz
      xxxxx-freebsd-386-2.10.1.gz
      xxxxx-freebsd-amd64-2.10.1.gz
      xxxxx-linux-386-2.10.1.gz
      xxxxx-linux-amd64-2.10.1.gz
      xxxxx-linux-armv5-2.10.1.gz
      xxxxx-linux-armv6-2.10.1.gz
      xxxxx-linux-armv7-2.10.1.gz
      xxxxx-linux-armv8-2.10.1.gz
      xxxxx-linux-mips-hardfloat-2.10.1.gz
      xxxxx-linux-mips-softfloat-2.10.1.gz
      xxxxx-linux-mips64-2.10.1.gz
      xxxxx-linux-mips64le-2.10.1.gz
      xxxxx-linux-mipsle-hardfloat-2.10.1.gz
      xxxxx-linux-mipsle-softfloat-2.10.1.gz
      xxxxx-windows-386-2.10.1.zip
      xxxxx-windows-amd64-2.10.1.zip

      Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。

      1、Mac下编译Linux, Windows平台的64位可执行程序:
      $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go
      $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go
      2、Linux下编译Mac, Windows平台的64位可执行程序:
      $ CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build test.go
      $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go
      3、Windows下编译Mac, Linux平台的64位可执行程序:
      $ SET CGO_ENABLED=0SET GOOS=darwin3 SET GOARCH=amd64 go build test.go
      $ SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build  test.go
      注:如果编译web等工程项目,直接cd到工程目录下直接执行以上命令

      GOOS:目标可执行程序运行操作系统,支持 darwin,freebsd,linux,windows
      GOARCH:目标可执行程序操作系统构架,包括 386,amd64,arm

      GOOS:目标平台的操作系统(darwin、freebsd、linux、windows) GOARCH:目标平台的体系架构(386、amd64、arm) 交叉编译不支持 CGO 所以要禁用它
      https://github.com/golang/go/blob/master/src/go/build/syslist.go#L8:31
      package build
      const goosList = "android darwin dragonfly freebsd js linux nacl netbsd openbsd plan9 solaris windows zos "
      const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le
      1.mac的环境下
      $ go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64
      $ go env -w CGO_ENABLED=0 GOOS=windows GOARCH=amd64
      
      2.linux环境下:
      $ go env -w CGO_ENABLED=0 GOOS=darwin GOARCH=amd64
      $ go env -w CGO_ENABLED=0 GOOS=windows GOARCH=amd64
      
      3.windows 环境下
      $ go env -w CGO_ENABLED=0 GOOS=darwin3 GOARCH=amd64
      $ go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64
      
      将环境变量修改完成之后,在进行 go build
      
      切换回来:
      go env -w CGO_ENABLED=1 GOOS=darwin GOARCH=amd64

    • 0
    • 0
    • 0
    • 1.2k
    • 请登录之后再进行评论

      登录
    • 做任务
    • 实时动态
    • 偏好设置
    • 单栏布局 侧栏位置: