首页 > 其他分享 >win下 golang 跨平台编译

win下 golang 跨平台编译

时间:2023-06-22 19:35:14浏览次数:56  
标签:ok .. win golang Go 跨平台 MinGW pkg go


本篇文章是win下的跨平台编译。

安装GCC编译器(MinGW)

我们需要GCC编译环境,这里我选择的是:MinGW。

mac 下安装了Xcode自动就带了GCC,win下没有,所以我们用MinGW这个最小化安装的GCC。

MinGW官网提供了一种自动在线下载安装的gui小程序,http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/ 。这个程序只需要简单的一步步跟着提示,就会自动下载每个组件的最新版本并且安装在电脑里面。

安装完成后,需要把gcc放在PATH全局参数下,这样才能被直接使用

我这里安装在  C:\MinGW\bin  目录下。

 

MinGW全称Minimalist GNU For Windows,是个精简的Windows平台C/C++、ADA及Fortran编译器,相比Cygwin而言,体积要小很多,使用较为方便。MinGW提供了一套完整的开源编译工具集,以适合Windows平台应用开发,且不依赖任何第三方C运行时库。


MinGW包括:
一套集成编译器,包括C、C++、ADA语言和Fortran语言编译器
用于生成Windows二进制文件的GNU工具的(编译器、链接器和档案管理器)
用于Windows平台安装和部署MinGW和MSYS的命令行安装器(mingw-get)
用于命令行安装器的GUI打包器(mingw-get-inst)

参考资料:

http://www.metsky.com/archives/588.html

 

编译本机系统go编译环境

在Go的安装目录的src目录下,执行脚本: all.bat

执行结果类似如下:省略了部分信息。

crypto/sha1    
crypto/hmac     
strconv     
os     
math/rand     
crypto/sha256     
os/user     
runtime/cgo     
runtime/debug     
runtime/race     
net/rpc/jsonrpc     
testing     
testing/iotest     
testing/quick # Testing packages.    
ok      cmd/api 1.328s     
?       cmd/cgo [no test files]     
ok      cmd/fix 1.674s     
ok      cmd/go  2.560s     
?       cmd/godoc       [no test files]     
ok      cmd/gofmt       0.570s ok      unicode 0.254s    
ok      unicode/utf16   0.147s     
ok      unicode/utf8    0.190s     
?       unsafe  [no test files] # runtime -cpu=1,2,4    
ok      runtime 47.297s # sync -cpu=10    
ok      sync    0.831s # ..\misc\dashboard\builder ..\misc\goplay 
# ..\test\bench\go1    
ok      _/C_/Go/test/bench/go1  3.727s # ..\misc\cgo\life 
# ..\misc\cgo\stdio 
# ..\misc\cgo\test    
ok      _/C_/Go/misc/cgo/test   3.024s # ..\misc\cgo\testso 
# ..\doc\progs 
# ..\test 
# Checking API compatibility.    
Go version is "go1.1.1", ignoring -next ..\api\next.txt     
~pkg net, func ListenUnixgram(string, *UnixAddr) (*UDPConn, error)     
~pkg syscall (darwin-386), func Fchflags(string, int) error     
~pkg syscall (darwin-386-cgo), func Fchflags(string, int) error     
~pkg syscall (darwin-amd64), func Fchflags(string, int) error     
~pkg syscall (darwin-amd64-cgo), func Fchflags(string, int) error     
~pkg syscall (freebsd-386), func Fchflags(string, int) error     
~pkg syscall (freebsd-amd64), func Fchflags(string, int) error     
~pkg text/template/parse, type DotNode bool     
~pkg text/template/parse, type Node interface { Copy, String, Type } ALL TESTS PASSED 
---    
Installed Go for windows/386 in C:\Go     
Installed commands in C:\Go\bin C:\Go\src>

生成各平台的标准命令工具和库

在命令行,依次执行,或者把下面放在一个bat文件中,一起执行:

# build linux amd64    
set GOOS=linux     
set GOARCH=amd64     
set CGO_ENABLED=0

注意,

小心空格, 上面环境变量设置最后都是不应该有空格的,否则会报类似: go tool dist: unknown $GOOS linux 的错误,

如果需要准备那个平台,那个架构的编译器和连接器,修改对应参数即可。

注意,这里一定要 make.bat --no-clean

执行的结果类似如下:

pkg/regexp    
pkg/go/token     
pkg/go/scanner     
pkg/go/ast     
pkg/go/parser     
pkg/os/exec     
pkg/os/signal     
pkg/net/url     
pkg/text/template/parse     
pkg/text/template     
pkg/go/doc     
pkg/go/build     
cmd/go     
pkg/runtime (linux/amd64)     
移动了         1 个文件。 # Building tools for local system. windows/386    
runtime     
errors     
sync/atomic     
unicode os/user    
runtime/debug     
testing     
net/rpc/jsonrpc     
testing/iotest     
testing/quick # Building packages and commands.    
runtime     
errors     
sync/atomic     
unicode net/mail    
net/rpc     
net/smtp     
os/user     
runtime/debug     
net/rpc/jsonrpc     
testing     
testing/iotest     
testing/quick ---    
Installed Go for linux/amd64 in C:\Go     
Installed commands in C:\Go\bin C:\Go\src>

 

交叉编译命令

在命令行,依次执行,或者把下面放在一个bat文件中,一起执行,即完成对应平台的编译:

set GOOS=linux    
set GOARCH=amd64     
set CGO_ENABLED=0     
go build

 

参考资料:

Cross compile for darwin from windows
https://groups.google.com/forum/#!topic/golang-nuts/IBJt_HkHJIw

64位WIN7中golang交叉编译环境 (这篇文章不能看,误导了我很久)
https://github.com/xgene/study/blob/master/README.md

Windows下利用MinGW配置GCC纯净编译环境的简单方法

标签:ok,..,win,golang,Go,跨平台,MinGW,pkg,go
From: https://blog.51cto.com/u_15588078/6535325

相关文章

  • win7 下配置resin的一些tip
    一、如何查看jdk安装目录;通过不同方法搜索javac看看,javac.exe是java的编译器;可用的搜索方法:1、cmd控制台: wherejavac2、开始菜单的搜索:一直到“计算机”中的搜索结果中寻找。一般会安装在后面目录下:C:\ProgramFiles\Java 二、下载安装Resin版本选择:resin普通版本和pro......
  • Win7环境下TreeSaver编译环境的搭配
    首先你需要先搭配出”Win7环境下TreeSaver例子环境的搭配”然后才能继续下一步编译环境。例子环境搭配后,你可以在源代码目录下执行paver命令,搭配例子测试环境,也可以执行paverdebug生成带调试注释信息的treesaver脚本,当然也可以使用paverclean删除生成的文件。这些可以......
  • Golang 中文转拼音
    翻遍整个GitHub,Golang中文转拼音类库,怎么就这么难找呢?于是我造了一个轮子:中文转拼音类库.目前来说应该是最好用的了.GitHub传送门:https://github.com/Lofanmi/pinyin-golang如果说基于汉字拼音字典,逐个汉字替换,也是可以转换的,但是碰到多音字就很麻烦了.而......
  • C:\Windows隐藏文件夹有哪些
    在Windows操作系统中,C:\Windows文件夹是一个重要的系统文件夹,用于存储操作系统的核心组件和文件。该文件夹通常包含许多隐藏文件和文件夹,这些文件和文件夹对于普通用户来说是不可见的。以下是一些常见的C:\Windows隐藏文件夹:C:\Windows\Temp:该文件夹用于存储临时文件,例如安装程序......
  • "Recent" 文件夹是一个特殊文件夹,在 Windows 操作系统中具有以下作用和功能:
    "Recent"文件夹是一个特殊文件夹,在Windows操作系统中具有以下作用和功能:最近使用的文件和文件夹:"Recent"文件夹会记录用户最近打开、编辑或访问过的文件和文件夹的快捷方式。这使得用户可以轻松地找到最近使用过的项目。快速访问文件:通过"Recent"文件夹,用户可以快速访问他......
  • C:\Windows\Installer\ 存储安装程序的数据库 修复和更改安装程序 安装程序的缓存
    C:\Windows\Installer\是一个特殊的系统文件夹,在Windows操作系统中扮演着重要的角色。它主要用于存储安装程序的相关信息和安装源。具体来说,C:\Windows\Installer\文件夹有以下几个作用和功能:存储安装程序的数据库:文件夹中包含一个名为"Installer"的数据库文件(即MSI数据库),......
  • C:\Windows\Inf\ 存储设备驱动程序信息 提供设备驱动程序安装和配置 存储硬件设备
    C:\Windows\Inf\是Windows操作系统中的一个文件夹,它在系统中起着重要的作用,并具有以下功能:存储设备驱动程序信息:C:\Windows\Inf\文件夹是Windows操作系统用于存储设备驱动程序信息的位置之一。当您在计算机上安装硬件设备时,相关的驱动程序文件会被复制到该文件夹中。这些文......
  • windows环境下,搭建RTSP视频推流服务器
    1.环境与配置1.1系统环境我这里使用的Windows1064位1.2下载RTSP服务器下载页面:https://github.com/aler9/rtsp-simple-server/releases这里,我们下载rtsp-simple-server_v0.19.1_windows_amd64.zip在百度网盘上下载也可以链接:https://pan.baidu.com/s/1FqMnAJWPo......
  • win 安装mysql
    参考MySQL8.0forWindowsv8.0.33官方免费绿色正式版64位在bin目录同级下创建一个文件,命名为my.iniD:\mysql_winx64\mysql-8.0.33-winx64\  下创建data目录编辑my.ini文件,文件内容如下:[mysqld]#设置3306端口port=3306#设置mysql的安装目录---这里输入你安装的......
  • 22.04.1 wine8.10 完美安装同花顺最新版THS_9.20.40_20230613
    Linuxluma5.19.0-45-generic#46~22.04.1-UbuntuSMPPREEMPT_DYNAMICWedJun715:06:04UTC20x86_64x86_64x86_64GNU/Linux目前测试的结果除了模拟委托下单出现问题,其他的暂时未发现任何问题。wine8.10gdiplus需要单独安装,否则同花顺的弹幕滚动无效同花顺字体......