当前位置:首页 » 编程软件 » go编译windows

go编译windows

发布时间: 2022-11-28 04:33:00

㈠ 怎样在window系统中,编译出.能在linux系统中运行的go程序

总共又三种方案:mingw+codeblocks,是windows下的gcc编译工具+跨的轻量ide,可以编译c++的程序,还可以使用wxWidget(跨的界面工具)
使用cygwin,是windows下中间件级别的编译工具。可以在cygwin下用命令行编译程序。
使用vmware或者其他虚拟机,安装目标linux系统,并且编译。这是虚拟硬件级别的编译工具,其编译的程序是完全可以在linux系统上运行的。

㈡ Go 是怎么使用 Go 来编译自身的

第一步:all.bash

% cd $GOROOT/src
% ./all.bash

第一步有些突兀,因为 all.bash 仅仅调用了其它两个 shell 脚本;make.bash 和 run.bash。如果你在使用 Windows 或 Plan 9,过程是一样的,只是脚本扩展名变成了.bat 或.rc。对于本文中的其它脚本,请根据你的系统适当改动。
第二步:make.bash

. ./make.bash --no-banner

main.bash 来源于 all.bash,因此调用退出将正确终止便宜进程。main.bash 有三个主要工作,第一个是验证编译 Go 的环境是否完整。完整性检查在过去几年中建立,它通常尝试避免使用已知的破损工具或必然失败的环境进行编译。
第三步. cmd/dist

gcc -O2 -Wall -Werror -ggdb -o cmd/dist/dist -Icmd/dist cmd/dist/*.c

一旦可用性检查完毕,make.bash 将编译产生 cmd/dist,cmd/dist取代了之前存在于Go 1 之前的Makefile 编译系统。cmd/dist用来管理少量的pkg/runtime的代码生成。cmd/dist 是C语言编写的程序,能够充分利用系统C编译器和头文件来处理大部分主机系统平台的检测。cmd/dist通常用来检测主机的操作系统和体系结构,即环境变量$GOHOSTOS和$GOHOSTARCH .如果是交叉编译的话,变量 $GOOS和$GOARCH可能会由于你的设置而不同。事实上,Go 通常用作跨平台编译器,只不过多数情况下,主机和目标系统一致而已。接下来,make.bash 调用cmd/dist 的引导参数的支持库、 lib9、 libbio 和 libmach,使用编译器套件,然后用自己的编译器进行编译。这些工具也是用 C 语言写的中,但是由系统 C 编译器编译产生。

echo "# Building compilers and Go bootstrap tool for host, $GOHOSTOS/$GOHOSTARCH."
buildall="-a"
if [ "$1" = "--no-clean" ]; then
buildall=""
fi
./cmd/dist/dist bootstrap $buildall -v # builds go_bootstrap

使用的编译器套件 cmd/dist 编译产生一个版本的gotool,go_bootstrap。但go_bootstrap并不是完整得gotool,比方说 pkg/net 就是孤立的,避免了依赖于 cgo。要编译的文件的列表以及它们的依赖项,是由cmd/dist编译的 ,所以十分谨慎地避免引入新的生成依赖项 到 cmd/go。

第四步:go_bootstrap

现在, go_bootstrap 编译完成了,make.bash 的最后一部就是使用 go_bootstrap 完成 Go 标准库的编译,包括整套 gotool 的替换版。

echo "# Building packages and commands for $GOOS/$GOARCH."
"$GOTOOLDIR"/go_bootstrap install -gcflags "$GO_GCFLAGS" \
-ldflags "$GO_LDFLAGS" -v std

第五步:run.bash

现在,make.bash 完成了,运行回到了 all.bash,它将引用 run.bash。run.bash 的工作是编译和测试标准库,运行时以及语言测试套件。

bash run.bash --no-rebuild

使用 --no-rebuild 标识是因为 make.bash 和 run.bash 可能都调用了 go install -a std,这样可以避免重复,--no-rebuild 跳过了第二个 go install。

# allow all.bash to avoid double-build of everything
rebuild=true
if [ "$1" = "--no-rebuild" ]; then
shift
else
echo '# Building packages and commands.'
time go install -a -v std
echo
fi

第六步:go test -a std

echo '# Testing packages.'
time go test std -short -timeout=$(expr 120 \* $timeout_scale)s
echo

下一步 run.bash z则是对标准库中的所有包进行单元测试,这是使用 testing 包编写的。由于 $GOPATH 和 $GOROOT 中的代码存在于同一个命名空间中,我们不能使用 go test,这可能会测试 $GOPATH 中的所有包,所以将创建别名std来标识标准库中的包。由于有些测试需要很长时间,或耗用大量内存,测试将会通过 -short 标识将其过滤。
第七步 runtime 和 cgo 测试

run.bash的下一节将运行大量对cgo支持的平台测试,运行一些季春测试,编译 Go 附带的一些杂项程序。随着时间的推移,这份杂项程序列表已经变长了,当它们发现自己并不包含在编译过程中时,沉默将不可避免的被打破。

第八步: go run test

(xcd ../test
unset GOMAXPROCS
time go run run.go
) || exit $?

run.bash的倒数第二步调用了$GOROOT目录下test文件夹中的编译器和运行时测试。这其中有描述编译器和运行时本身的低层级测试。而子目录 test/bugs 及 test/fixedbugs 中的测试对已知问题和已解决问题进行特别的测试。所有测试的测试驱动器是 $GOROOT/test/run.go,该程序很小,它调用test文件夹中的每个.go 文件。有些 .go 文件在首行上描述了预期的运行结果,例如,程序失败或是放出特定的输出队列。

第九步go tool api

echo '# Checking API compatibility.'
go tool api -c $GOROOT/api/go1.txt,$GOROOT/api/go1.1.txt \
-next $GOROOT/api/next.txt -except $GOROOT/api/except.txt

run.bash的最后一部将调用API工具,API工具的作用是执行 Go 1 约定;导出的符号,常数,函数,变量,类型和方法组成2012年确认的 Go 1 API。Go 1 写在 api/go1.txt 文件,而 Go 1.1 则写在 api/go1.1.txt文件中。另一个额外的文件,api/next.txt 描述了G 1.1自后添加到标准库和运行时中的符号。当 Go 1.2 发布时,这个文件将会成为 Go 1.2 的约定,另一个新的 next.txt 文件也将被创建。这里还有一个小文件,except.txt,它包括 Go 1 约定中被批准的扩展。对文件的增添总是小心翼翼的。

㈢ “测试开发全栈化-Go”(1) Go语言基本了解

作为一个测试,作为一个测试开发, 全栈化+管理 是我们未来的发展方向。已经掌握了Java、python、HTML的你,是不是也想了解下最近异常火爆的Go语言呢?来吧,让我们一起了解下。

Go 是一个开源的编程语言 ,它能让构造简单、可靠且高效的软件变得容易。

Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。这三个人都是计算机界的大神,有的参与了C语言的编写,有的还是数学大神,有的还获得了计算机最高荣誉-图灵奖。


接下来说说 Go语言的特色 :

简洁、快速、安全

并行、有趣、开源

内存管理、数组安全、编译迅速


Go语言的用途 :

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于 游戏 服务端的开发而言是再好不过了。


Go语言的环境安装:

建议直接打开 https://golang.google.cn/dl/ 官方地址因为墙的原因打不开

因为我用的是windows系统,这里主要讲下Windows系统上使用Go语言来编程。


Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.17.2.windows-amd64.msi)的安装包来安装。

默认情况下 .msi 文件会安装在 c:Go 目录下。你可以将 c:Gobin 目录添加到 Path 环境变量中。添加后你需要重启命令窗口才能生效。个人建议还是安装到 Program Files文件夹中。


使用什么开发工具来对Go语言进行编写:

个人建议用VS code, 也可以用Sublime Text来编辑。如果你之前看了我讲的HTML语言的学习,肯定已经下载了VS code. 那么这时你需要在VS code中下载Go语言的扩展插件。

这里有一个巨大的坑,就是在下载Go的插件和依赖包时,会提示一些包没有。主要是因为下载的依赖包部分被墙了,只能想别的办法去下载。

建议参考网页:

https://blog.csdn.net/qq_40876767/article/details/105658433


解决vscode中golang插件安装失败方法

在学习go的过程中,使用的是vscode,但是一直提示安装相关插件失败,然后上网查方法,基本上是叫你建立golang.org目录什么的,结果全是错的,而且都是抄袭,很烦。无意之中看到一位博主分享的方法,他也是饱受上述的垃圾博文困扰,然后找到了解决方法,这里向他致敬,秉着让更多人看到正确解决方法的心,我写下正确的解决方法,希望对你有所帮助,也可以点开原博主链接参考:https://www.cnblogs.com/xll970105/p/11906899.html


Go有一个全球模块代理,设置代理再去安装golang的插件,就可以安装成功了。步骤有,首先Windows用户打开Powershell,一个蓝色的界面,注意不是cmd!不知道的直接打开window下面的搜索,然后输入powershell,搜索出来就可以了。


$env:GO111MODULE=“on”


$env:GOPROXY=“https://goproxy.io”


go env -w GOPROXY=https://goproxy.io,direct


go env -w GOPRIVATE=*.corp.example.com


然后我们打开VsCode界面,下面会提示安装插件,我们选择Install ALL,就会安装成功


当你在运行Go语言程序时,提示所有的插件包都已经安装成功了时,就可以正常使用了,要不然一堆报错会让你非常心烦。


好了,今天先到这里,晚安、下班~

㈣ Go 是怎么使用 Go 来编译自身的

是Go语言吗?

Go 编译过程 九个步骤

第一步. all.bash

%cd$GOROOT/src
%./all.bash

第一步 all.bash只是调用了另外两个 shell 脚本:make.bash和run.bash。若使用 Windows 或 Plan 9,其过程也基本类似,只是脚本分别以 .bat 或 .rc 结尾。在文章的其他部分,请用适当的操作系统对应的扩展来补全命令。



第二步. make.bash

../make.bash--no-banner

make.bash 作为 all.bash 内容的一部分,如果它退出也会中断构建过程



第三步. cmd/dist

gcc-O2-Wall-Werror-ggdb-ocmd/dist/dist-Icmd/distcmd/dist/*.c

当健全检查完成后,make.bash 开始编译cmd/dist。




第四步. go_bootstrap

现在 go_bootstrap 已经构建完成,make.bash 的最后一步是使用 go_bootstrap 编译完整的 Go 标准库,包括一个完整的 go 工具用以替换。

echo"#$GOOS/$GOARCH."
"$GOTOOLDIR"/go_bootstrapinstall-gcflags"$GO_GCFLAGS"
-ldflags"$GO_LDFLAGS"-vstd


第五步. run.bash

现在 make.bash 已经完成,回到 all.bash 的执行,这会调用 run.bash。run.bash 的任务是编译和测试标准库、运行时以及语言测试集。

bashrun.bash--no-rebuild

由于 make.bash 和 run.bash 都会调用 go install -a std,因此需要使用 –no-rebuild 标志来避免重复前面的步骤,–no-rebuild 跳过了第二个 go install。

#allowall.bashtoavoiddouble-buildofeverythingrebuild=trueif["$1"="--no-rebuild"];thenshiftelseecho'#Buildingpackagesandcommands.'timegoinstall-a-vstdechofi

第六步. go test -a std

php">echo'#Testingpackages.'
timegoteststd-short-timeout=$(expr120*$timeout_scale)s
echo

接下来 run.bash 会在标准库里所有的包上来运行用 testing 包编写的单元测试。由于 $GOPATH 和 $GOROOT 中有着相同的命名空间,所以不能直接使用 go test … 否则 $GOPATH 中的每个包也会被逐一测试,因此创建了一个用于标准库中的包的别名:std。由于一些测试需要比较长的时间,且会消耗大量内存,因此用 -short 标志对一些测试进行了过滤。



第七步. runtime 和 cgo 测试

run.bash 接下来的部分会运行平台对 cgo 支持的测试,执行一些性能测试,并且编译一些伴随 Go 发行版一起的杂项程序。随着时间的流逝,这些杂项程序的清单会越来越长,那么它们也就会不可避免的被从编译过程中悄悄剥离出去。

第八步. go run test

(xcd../test
unsetGOMAXPROCS
timegorunrun.go
)||exit$?

run.bash 的倒数第二步会调用在 $GOROOT 下的 test 目录里的编译器和运行时的测试。他们是对于编译器和运行时自身的,较为低级细节的测试。会执行语言规格测试,test/bugs 和 test/fixedbugs 子目录保存有那些已经被发现并被修复的问题的独立的测试。驱动测试的是一个小 Go 程序 $GOROOT/test/run.go,会执行 test 目录里的每个 .go 文件。一些 .go 文件的首行包含了指导 run.go 对结果作出判断的指令,例如,程序将会失败,或提供一个确定的输出队列。

第九步. go tool api

echo'#CheckingAPIcompatibility.'
gotoolapi-c$GOROOT/api/go1.txt,$GOROOT/api/go1.1.txt
-next$GOROOT/api/next.txt-except$GOROOT/api/except.txt

run.bash 的最后一步调用了 api 工具。

㈤ GoLang1.1 在windows下编译,如何让程序运行时的DOS窗口不显示

参考使用下面代码: @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit :begin setlocal enabledelayedexpansion set n= set p=D:\My Documents\My Pictures pushd %p% for /f "tokens=*" %%i in ('dir/b/od *.jpg') do ( set /a n+=1 if !n! leq 4 del "%%i" )

求采纳

㈥ windows平台下编译linux C语言+GO语言混合代码

这有关操作系统中的进程管理.拉高CPU运行,所指的其实就是提高优先级,平常使用的都是相同优先级进程,你提高优先级后,CPU就多跑你的进程,而windows提高优先级的函数请参考windows下相关API两个系统为什么不同,要看到底有多少相同或更高级别任务运行,windows任务较多,所以跑到你的进程就比较少.这个你最好看看任务数量.

㈦ go语言程序 运行在windows上吗

VC++,C#,VB,VJ(以上安装VS2008即可),C++builder等都可以编译windows下的应用程序,JBuilder编译的则需要环境支持,不过安装环境也很简单。

㈧ 如何在windows环境下编译ngrok

1、安装google go
2、安装git
3、安装Mingw
4、把go的bin目录添加到PATH环境变量,可以直接在CMD中执行
SET PATH=%PATH%;C:\go\bin
5、把mingw的bin目录添加到PATH路径
SET PATH=%PATH%;C:\go\bin
6、下载ngrok源码
7、将下载的zip解压出来,修改Makefile
将 export GOPATH:=$(shell pwd)
改为 export GOPATH:=C:\Users\Administrator\Desktop\ngork\ngrok-src
将 bin/go-bindata:
GOOS="" GOARCH="" go get github.com/jteeuwen/go-bindata/go-bindata
这段改为 bin/go-bindata:
GOOS=windows GOARCH=amd64 go get github.com/jteeuwen/go-bindata/go-bindata
8、修改log4go的路径
修改src\ngrok\log\logger.go中log4o那段代码为
log "github.com/keepeye/log4go"
9、cmd执行
make release-all

㈨ 如何配置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。下载地址:http://code.google.com/p/gomingw/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的插件,下载地址:http://code.google.com/p/goclipse/
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语言的教程(http://tour.golang.org/#2),很不错。支持在web上直接运行大部分的go程序,想了解这个教程的源代码的朋友可以通过以下方式获取。如果没兴趣,可以跳过这个步骤。

1、下载安装Mercurial软件。
2、在命令行下输入:
hg clone http://[email protected]/r/qinhui99-go-tour/
http://[email protected]/r/qinhui99-go-tour/这个URL是我从google的go-tour源代码的一个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了。

㈩ go语言开发的程序能直接在windows平台运行吗

go语言和C++一样是编译型语言,开发的程序可以直接在运行

热点内容
09压缩饼干 发布:2025-05-15 05:05:58 浏览:279
迭代法编程c 发布:2025-05-15 04:58:01 浏览:815
用什么dns服务器地址快 发布:2025-05-15 04:52:59 浏览:27
手机端so反编译 发布:2025-05-15 04:50:55 浏览:610
linuxlamp安装 发布:2025-05-15 04:50:45 浏览:578
sqlplus缓存区怎么设置 发布:2025-05-15 04:50:44 浏览:858
shell脚本环境变量 发布:2025-05-15 04:45:18 浏览:693
安卓nba2k18什么时候出 发布:2025-05-15 04:38:42 浏览:393
王者安卓转苹果为什么显示失败 发布:2025-05-15 04:35:49 浏览:18
手机优酷缓存视频格式 发布:2025-05-15 04:13:45 浏览:210