gobuilder,免写脚本,一键编译go项目到多平台(支持CGO)

2024-06-14 12:12

本文主要是介绍gobuilder,免写脚本,一键编译go项目到多平台(支持CGO),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文档地址:https://github.com/gvcgo/gobuilder/blob/main/docs/README_CN.md

项目地址:https://github.com/gvcgo/gobuilder

何为 gobuilder?

gobuilder 是一个用于编译 go 项目的工具。它功能上与 go build 类似,但是做了增强。能够同时编译到不同平台和架构 (支持 CGO 跨平台编译),不需要单独写脚本。特别适合于需要编译到多个平台,并需要对 windows 误报病毒现象进行修复的情况。

gobuilder产生的契机是,作者的开源项目vmr需要跨平台编译,而且Windows用户反馈发布的binary会被windows defender误报病毒,这一点go语言官方也做了相关解释,但是没有给出特别好的解决办法。因此,作者开发了gobuilder工具,用于支持这些常见功能,方便需要一键跨平台编译的项目。

功能特点

  • 同时编译到 go build 支持的任何一个或者多个平台;
  • 使用 xgo 对 CGO 进行交叉编译 (可选);
  • 使用 UPX 对 binary 进行压缩 (可选);
  • 使用 garble 对 windows 可执行文件进行混淆 (可选);
  • 使用 osslsigncode 对 windows 可执行文件进行数字签名,消除 windows defender 误报病毒 (可选);
  • 自动对 binary 进行 zip 压缩打包 (可选);
  • 在 go 项目下的任何文件夹中,都可以一键编译该项目;
  • 记住编译参数,后续任何时间再编译时,无需要输入任何参数;
  • 无需编写任何脚本;
  • 整洁,会在项目主目录下创建 build 文件夹,编译配置文件 build.json 以及二进制文件、压缩文件均存放在此处;

这篇关于gobuilder,免写脚本,一键编译go项目到多平台(支持CGO)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060375

相关文章

基于Python编写一个git自动上传的脚本(打包成exe)

《基于Python编写一个git自动上传的脚本(打包成exe)》这篇文章主要为大家详细介绍了如何基于Python编写一个git自动上传的脚本并打包成exe,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录前言效果如下源码实现利用pyinstaller打包成exe利用ResourceHacker修改e

Django调用外部Python程序的完整项目实战

《Django调用外部Python程序的完整项目实战》Django是一个强大的PythonWeb框架,它的设计理念简洁优雅,:本文主要介绍Django调用外部Python程序的完整项目实战,文中通... 目录一、为什么 Django 需要调用外部 python 程序二、三种常见的调用方式方式 1:直接 im

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻