• go编译中常用的xgo和upx工具详解


    go编译中常用的xgo和upx工具详解

    1. go自带跨平台编译功能
    2. mac/linux 执行命令:CGO_ENABLED=0 GOOS=linux/darwin GOARCH=amd64 go build filename.go -o outname
    3. windows 执行命令 SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build filename.go

    一、go的交叉编译工具xgo

    1. 版本

      • 原始版本,不支持go mod,github.com/karalabe/xgo
        • 安装go get github.com/karalabe/xgo
      • 支持go mod的版本, github.com/techknowlogick/xgo⁣
        • 注意安装要用,go get src.techknowlogick.com/xgo
        • go get github.com/techknowlogick/xgo⁣ 会报错,提示你用上面的命令
    2. 依赖

      • 不管何种版本的xgo都依赖于docker,所以你的电脑一定要在docker
      • 可以手动pull相关镜像,例如,docker pull techknowlogick/xgo:latest
      • 如果要的镜像不存在,xgo命令会自动执行docker的pull命令去安装对应的镜像
    3. 命令

      • -h 显示帮助

      • -go 指定go的版本,需要下载对应版本的docker镜像,非常大平均8G

      • -pkg 指定程序编译的入口

      • -out 指定编译后的名字

      • 输出的目录,目前测试只能用“.”,即当前目录生成

      • -v 显示编译包的详细

      • -targets 生成目标环境的包,多个的用','分开,*可以生成多个芯片类型的包

        • --targets=linux/amd64,darwin/amd64,darwin/arm64,windows/*
          
    4. 参考文档

    二、 二进制文件压缩工具upx

    1. go生成的二进制文件,可能非常大,上传服务器什么非常吗
    2. upx可以有效压缩二进制文件
    3. 安装方法
      • Mac brew install upx
      • centos yum install upx -y
      • Debian apt install upx
    4. 使用方法
      • upx 二进制文件
      • 压缩后的文件会直接替换原文件,一般都能减小40%
  • 相关阅读:
    [JavaScript]编写一份会动的简历
    Vue.js 创建一个 CNODE 社区(1)
    hdu 2051
    hdu 2050
    hdu 2048
    赫夫曼编码
    R语言的学习(四)
    R语言的学习(三)
    R语言的学习(二)
    R语言的学习(一)
  • 原文地址:https://www.cnblogs.com/qumogu/p/15434946.html
Copyright © 2020-2023  润新知