如何在windows平台下将golang应用交叉编译后运行在linux平台
实现步骤:
-
创建一个godemo
packagemain import"fmt" funcmain(){ fmt.Println("多课网,老郭,测试golang交叉编译") } -
查看自己的goenv
在命令行输入:goenv结果如下
setGO111MODULE=on setGOARCH=amd64 setGOBIN= setGOCACHE=C:\Users\52406\AppData\Local\go-build setGOENV=C:\Users\52406\AppData\Roaming\go\env setGOEXE=.exe setGOEXPERIMENT= setGOFLAGS= setGOHOSTARCH=amd64 setGOHOSTOS=windows setGOINSECURE= setGOMODCACHE=C:\Users\52406\go\pkg\mod setGONOPROXY= setGONOSUMDB= setGOOS=windows setGOPATH=C:\Users\52406\go setGOPRIVATE= setGOPROXY=http://goproxy.cn setGOROOT=C:\ProgramFiles\Go setGOSUMDB=sum.golang.org setGOTMPDIR= setGOTOOLDIR=C:\ProgramFiles\Go\pkg\tool\windows_amd64 setGOVCS= setGOVERSION=go1.17.3 setGCCGO=gccgo setAR=ar setCC=gcc setCXX=g++ setCGO_ENABLED=1 setGOMOD=NUL setCGO_CFLAGS=-g-O2 setCGO_CPPFLAGS= setCGO_CXXFLAGS=-g-O2 setCGO_FFLAGS=-g-O2 setCGO_LDFLAGS=-g-O2 setPKG_CONFIG=pkg-config setGOGCCFLAGS=-m64-mthreads-fno-caret-diagnostics-Qunused-arguments-fmessage-length=0-fdebug-prefix-map=C:\Users\52406\AppData\Local\Temp\go-build498288655=/tmp/go-build-gno-record-gcc-switches
-
修改环境变量
$env:GOOS="linux" $env:GOARCH="amd64"
-
重新查看环境变量,保存环境变量被修改
在命令行输入:goenv结果如下
setGO111MODULE=on setGOARCH=amd64 setGOBIN= setGOCACHE=C:\Users\52406\AppData\Local\go-build setGOENV=C:\Users\52406\AppData\Roaming\go\env setGOEXE= setGOEXPERIMENT= setGOFLAGS= setGOHOSTARCH=amd64 setGOHOSTOS=windows setGOINSECURE= setGOMODCACHE=C:\Users\52406\go\pkg\mod setGONOPROXY= setGONOSUMDB= setGOOS=linux setGOPATH=C:\Users\52406\go setGOPRIVATE= setGOPROXY=http://goproxy.cn setGOROOT=C:\ProgramFiles\Go setGOSUMDB=sum.golang.org setGOTMPDIR= setGOTOOLDIR=C:\ProgramFiles\Go\pkg\tool\windows_amd64 setGOVCS= setGOVERSION=go1.17.3 setGCCGO=gccgo setAR=ar setCC=gcc setCXX=g++ setCGO_ENABLED=0 setGOMOD=C:\Users\52406\Desktop\golang\golangprojects\duoke360.com\golangweb\go.mod setCGO_CFLAGS=-g-O2 setCGO_CPPFLAGS= setCGO_CXXFLAGS=-g-O2 setCGO_FFLAGS=-g-O2 setCGO_LDFLAGS=-g-O2 setPKG_CONFIG=pkg-config setGOGCCFLAGS=-fPIC-m64-fno-caret-diagnostics-Qunused-arguments-fmessage-length=0-fdebug-prefix-map=C:\Users\52406\AppData\Local\Temp\go-build891061685=/tmp/go-build-gno-record-gcc-switches
-
使用gobuild编译demo.go
gobuilddemo.go
会生成一个demo可执行文件
-
将demo文件上传到linux环境下
-
修改demo的执行权限
chmod+x./demo
-
运行程序
./demo
-
运行结果如下
多课网,老郭,测试golang交叉编译