如何编译go语言exe go语言生成exe

Go 是怎么使用 Go 来编译自身的Go是一个图灵完备的语言
任何图灵完备的语言理论上都可以用来编译自身 。比如c/c, java, vb, php等等都可以 。
至于怎么编译自身的:
用其它语言比如c实现一个[Go语言编译器-1]
用Go语言写一个[Go语言编译器-2]
用这个c实现的[Go语言编译器-1]编译第2步里面说的Go语言写的[Go语言编译器-2]
用第3步得到的[Go语言编译器-2],再编译一次第2步里面说的[Go语言编译器-2]的源码 。
OK,现在有一个Go语言实现的编译器了,最开始那个c写的编译器没用了,可以扔掉不要了 。以后就不停的优化使用这个Go语言实现的自身的编译器就行了 。
怎么把.go语言编译成mac下运行的程序我也有这方面的问题,我在mac os下:[mw_shl_code=shell,true]$ echo $GOOSwindows$ echo $GOARCH386$ go build -o hello.exe hello.go$ file hello.exehello.exe: Mach-O 64-bit executable x86_64[/mw_shl_code]
如何配置go语言开发环境1、下载go的zip文件 。并且一定要把文件解压到c:\go目录下 。
2、配置windows的高级环境变量 。包括:GOROOT、GOOS、GOBIN、GOARCH 。并且在path变量里面把c:\go\bin加入 。以便可以在命令行直接运行go命令 。
举例:我的机器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安装路径;
F:\workspace\goSample01是我写的go语言项目的工程目录;
F:\workspace\goSample01\bin是go语言项目的工程目录下的可执行文件路径;
3、在完成环境变量配置后 , 打开一个命令行窗口,直接输入go,然后回车,看看是否出现go的帮助信息 。如果出现 , 那么go的基本环境就OK了 。
注意:这个基本环境不包含开发工具,也不能直接编译带C代码的go程序 。
4、
(可选)为了支持Import远程包 , 最好装个gomingw 。下载地址:
【如何编译go语言exe go语言生成exe】/downloads/list 。如果下的是压缩包,请把它解压到C盘 。例如,C:\gowin-env 。里面有个Console.bat是以后使用go
get的环境 。举例:有个文件a.go,里面import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
为了编译该a.go文件,需要启动Console.bat,然后在该命令行窗口 , 进入c:\go\src目录下 , 执行go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go会自动下载该远程包并编译和安装这些包 。
配置goclipse(可?。?
(如果不喜欢eclipse开发工具 , 请跳过这个配置 。)
1、下载并安装goclipse插件 。Goclipse是go语言for eclipse的插件,下载地址:
2、启动eclipse并创建go项目 。然后写个最简单的helloworld.go文件 , 并运行 。代码如下:
packagemainimport"fmt"func main(){fmt.Printf("hello, world")}
配置gocode(可?。?
如果不需要go语法辅助和eclipse里面的(按ALT /)弹出go语言自动辅助功能 , 请跳过这个配置 。
1、下载gocode的zip文件,解压后放在go的bin目录下 。
2、下载并安装Git软件 。并且在path里面配置git的执行路径 。例如c:\git\bin
3、在命令行执行:go build .\gocode 。如果一切正常,那么将会编译生成一个gocode.exe文件在go的bin目录下 。如果编译失败,那么就转第4步 。
4、如果第3步直接编译gocode源文件成功,那就直接到第5步 。否则,就需要通过git下载gocode源文件,然后再编译 。在命令行执行:go get -u github.com/nsf/gocode。就会生成gocode.exe文件 。
5、在goclipse插件里面指定gocode的路径 。就可以在elcipse里面调用gocode来帮助写编码了 。
从开发工具这块看,go语言还不够成熟,开发工具都还不完善,有待改进 。
下载go-tour教程源代码(可?。?
Google有个在线运行go语言的教程(),很不错 。支持在web上直接运行大部分的go程序,想了解这个教程的源代码的朋友可以通过以下方式获取 。如果没兴趣,可以跳过这个步骤 。
1、下载安装Mercurial软件 。
2、在命令行下输入:
hg clone
作为测试用的 。如果把http改成https协议,下载就会失败 。搞不懂 。
编译带调用C代码的go文件(可?。?
1、为了在windows下编译带C代码的go程序,你首先需要下载并安装MinGW或者Cygwin 。
2、首选安装MinGW 。在安装MinGW之后 , 记得要把MinGW安装目录\bin路径设置在path环境变量里面 , 以便能在dos窗口下直接调用gcc 。
3、下载一个gowin-env 。下载地址:gowin-env 。下载后解压到某个目录下,例如:C:\gowin-env. 然后,编辑go-env.bat 。配置相关的go参数 。例如 , 我的配置是:
set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
设置好go-env.bat后 , 就可以点击Console.bat来启动编译和运行窗口 。
4、编写一个带C代码的go程序 。例如,testc.go
5、编译
例如:
go build -compiler gccgo test_c.go
运行调用C代码的go文件(可?。?
1、testc.go.
创建rand目录,然后在rand里面创建testc.go. 代码如下:
package rand
/*
//
#include stdio.h
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2、a.go
在rand下创建a.go.代码如下:
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3、test_import.go
在rand的上一级创建test_import.go 。代码如下:
package main
import "./rand"
func main(){
rand.SayHello("tom")
rand.PrintHello()
}
4、运行test_import.go
go run test_import.go
在测试其它几个C代码的时候 , 发现windows版本的cgo还有些编译问题,同样的代码转移到苹果的XCODE下就没有问题 。后来终于发现原因了,原来有些例子是unix平台下的,而在windows平台下 , 方法名和参数需要做调整 。
例如:下面代码在windows下编译报一堆错误 。
package rand
/*
#include stdlib.h
*/
import "C"
func Random() int {
return int(C.random())
}
func Seed(i int) {
C.srandom(C.uint(i))
}
这里需要把return int(C.random()) 修改为“return int(C.rand())”
C.srandom(C.uint(i))修改为“C.srand(C.uint(i))”编译就OK了 。
如何编译arm linux的goGolang也就是Go语言,现在已经发行到1.4.1版本了,语言特性优越性和背后Google强大靠山什么的就不多说了 。Golang的官方提供了多个平台上的二进制安装包,遗憾的是并非没有发布ARM平台的二进制安装包 。ARM平台没办法直接从官网下载二进制安装包来安装,好在Golang是支持多平台并且开源的语言,因此可以通过直接在ARM平台上编译源代码来安装 。整个过程主要包括编译工具配置、获取Golang源代码、设置Golang编译环境变量、编译、配置Golang行环境变量等步骤 。
注:本文选用树莓派做测试,因为树莓派是基于ARM平台的 。
1、编译工具配置
据说下个版本的golang编译工具要使用golang自己来写,但目前还是使用C编译工具的 。因此,首先要配置好C编译工具:
1.1 在Ubuntu或Debian平台上可以使用sudo apt-get install gcc libc6-dev命令安装,树莓派的RaspBian系统是基于Debian修改的,所以可以使用这种方法安装 。
1.2 在RedHat或CentOS 6平台上可以使用sudo yum install gcc libc-devel命令安装 。
安装完成后可以输入 gcc --version命令验证是否成功安装 。
2、获取golang源代码
2.1 直接从官网下载源代码压缩包 。
golang官网提供golang的源代码压缩包,可以直接下载,最新的1.4.1版本源代码链接:
2.2 使用git工具获取 。
golang使用git版本管理工具,也可以使用git获取golang源代码 。推荐使用这个方法,因为以后可以随时获取最新的golang源代码 。
2.2.1 首先确认ARM平台上已经安装了git工具,可以使用git --version命令确认 。一般linux平台都安装了git,没有的话可以自行安装,不同平台的安装方法可以参考:
2.2.2 克隆远程golang的git仓库到本地
在终端cd到你想要安装golang的目录,确保该目录下没有名为go的目录 。然后以下命令获取代码仓库:
git clone
大陆地区可能会获取失败,在不翻墙的情况下我试了几次都没成功,原因大家都懂的 。好在google已经将golang也托管到github上面,所以也可以通过下面命令获?。?
git clone
视网络情况,下载可能需要不少时间 。我2M的带宽花了将近两个小时才下载完,虽然整个项目不过几十兆= =
下载完成后,可以看到目录下多了一个go目录,里面即为golang的源代码,在终端上执行cd go命令进入该目录 。
执行下面命令检出go1.4.1版本的源代码,因为现在已经有新的代码提交上去了,最新的代码可能不是最稳定的:
git checkout go1.4.1
至此,最新1.4.1发行版的源代码获取完毕
3、设置golang的编译环境变量
主要有GOROOT、GOOS、GOARCH、GOARM四个环境变量需要设置,先解释四个环境变量的意义 。
3.1 GOROOT
主要代表golang树结构目录的路径 , 也就是上面git检出的go目录 。一般可以不用设置这个环境变量,因为编译的时候默认会以go目录下src子目录中的all.bash脚本运行时的父目录作为GOROOT的值 。为了保险起见,可以直接设置为go目录的路径 。
3.2 GOOS和GOARCH
分别代表编译的目标系统和平台 , 可选值如下:
GOOSGOARCH
darwin386
darwinamd64
dragonfly386
dragonflyamd64
freebsd386
freebsdamd64
freebsdarm
linux386
linuxamd64
linuxarm
netbsd386
netbsdamd64
netbsdarm
openbsd386
openbsdamd64
plan9386
plan9amd64
solarisamd64
windows386
windowsamd64
需要注意的是这两个值代表的是目标系统和平台 , 而不是编译源代码的系统和平台 。树莓派的RaspBian是linux系统,所以这些GOOS设置为linux,GOARCH设置为arm 。
3.3 GOARM
表示使用的浮点运算协处理器版本号,只对arm平台有用,可选值有5,6,7 。如果是在目标平台上编译源代码,这个值可以不设置,它会自动判断需要使用哪一个版本 。
总结下来,在树莓派上设置golang的编译环境变量 , 可编辑$HOME/.bashrc文件,在末尾添加下面内容:
export GOROOT=你的go目录路径
export GOOS=linux
export GOARCH=arm
编辑完后保存,执行source ~/.bashrc命令让修改生效 。
4、编译源代码
环境变量配置完成自后就可以开始编译源代码 。在go目录下的src子目录中,主要有all.bash和make.bash两个脚本(另外还有两个all.bat和make.bat脚本适用于window平台) 。编译实际上就是执行其中一个脚本,两者的区别在于all.bash在编译完成后还会执行一些测试套件 。如果希望只编译不测试,可以运行make.bash脚本 。使用cd命令进入go下src目录,执行./all.bash或者./make.bash命令即可开始编译 。由于硬件情况不同,编译耗费的时间不同 。在我的B型树莓派编译过程花费了将近半个小时 , 编译完成后执行的测试套件又花费了差不多一个小时,总共花费了一个半小时左右 。
5、配置golang运行环境变量
编译完成后,go目录下会生成bin目录,里面就是go的运行脚本 。为了以后使用方法,可以将这个bin路径添加到PATH环境变量中 。同样编辑~/.bashrc文件,因为前面设置过GOROOT环境变量指向go目录了,所以只需要在末尾加上
export PATH=$PATH:$GOROOT/bin
保存后同样执行source ~/.bashrc命令让环境变量生效 。
至此 , golang源代码编译安装成功 。执行go version应该就能看到当前golang的版本信息,表示编译安装成功 。
Go语言编译器TinyGo,基于LLVM,在微控制器和小系统上编译和运行 TinyGo是一个为微控制器、WebAssembly(Wasm)和命令行工具等小型场景设计的Go语言编译器 。TinyGo重用了Go语言工具和LLVM使用的库,以编译用Go语言编写的程序 。目前,该项目在GitHub上已经积累了10.1k的Star 。
如下为一个示例程序,当运行在任何支持的带板载LED的主板上时,则会点亮内置LED 。
上述程序可以在单片机、Adafruit ItsyBitsy M0微控制器或任何支持的带内置LED的板上进行编译和不需要修改的运行,只要设置正确的TinyGo编译器目标即可 。例如 , 设置如下目标可以编译和点亮 单片机 。
项目概述
TinyGo项目旨在将Go语言引入到具有单进程或核心的微控制器和小系统 。TinyGo类似于emgo,但主要的区别在于作者想要保留Go内存模型 。另一个区别在于TinyGo在内部使用LLVM,因而可以获得更小更高效的代码以及更高的灵活性 。
创建TinyGo项目的初衷是,如果Python可以在微控制器上运行,Go语言当然也应该能够在更低级微设备上运行 。
支持设备
你可以为微控制器、WebAssembly和Linux编译TinyGo程序 。目前,TinyGo支持以下85种微处理器板 。
更多技术细节请参阅原项目 。
怎么吧go程序打包成可运行的EXE文件你在编译器里面build一下,然后去\bin\debug目录下找.exeexe就是可执行文件了 。运行的时候可能需要用到debug目录下的其他文件(如配置文件、dll等),所以需要把debug下的所有文件都放到一起 。
如何编译go语言exe的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言生成exe、如何编译go语言exe的信息别忘了在本站进行查找喔 。

    推荐阅读