go语言开发的一个让人激动的特性就是可以跨平台。
同样的代码,无需修改,只要重新编译一下就可以在另一个平台下运行,而你只需要在编译的时候指定一下目标平台系统就可以了。
最常见的就是windows下开发完的应用需要跑在linux上了。拿一个已经开发完成的web程序来实践,在windows上编译出red hat linux上的应用吧。
编译到其他系统也相差无几。首先,编译使用命令行窗口进行。
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
CGO: 交叉编译不支持CGO,需要禁用
GOOS: 运行程序平台的系统
GOARCH: 运行程序平台的系统架构
其中“main.go”就是要编译的go程序了。
通常:64位架构为amd64;32位架构为386
linux: uname -a 或者 lscpu 查看系统架构
[root@VM_0_15_centos app]# uname -a
Linux VM_0_15_centos 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
x86_64: 为x86架构的64位拓展
扩展:linux 下编译 window
CGO_ENABLED=0
GOOS=windows
GOARCH=amd64
go build main.go
好了,咱们继续,如下图所示:
实操的结果就是在文件main.go的路径下生成了一个main文件。
把这个编译结果main文件及程序运行配置文件静态文件等一起复制到red hat linux中。
我这里把它放在desktop了。
之后打开terminal
第一次可能需要给main程序权限
chmod 777 程序名称
我这里输入的命令是 chmod 777 main
之后就可以直接运行main程序了
./main
一般情况下,直接运行就是可以的
欣赏一下我此次测试实践的效果
如果你想停掉这个应用。先ps命令找到这个应用
PID3752那行就是目标应用进程了
使用kill命令,关掉这个进程
kill3752
再刷新浏览器就发现应用已经停止了
应用停止了,网页自然就打不开了
现在重新运行起来
刷新浏览器,一切又都恢复正常了。