go编译后,如何直接在其他没有go环境的机器上执行,像linux rpm包一样直接执行。

go编译后,如何直接在其他没有go环境的机器上执行,像linux rpm包一样直接执行。
已邀请:
使交叉编译,推荐使用gox
go get github.com/mitchellh/gox
gox -osarch="windows/amd64"
gox -osarch="linux/amd64"
至次,直接将编译好的exe或linux二进制文件上传上去执行即可。

astaxie - 创造、获取、分享、传播和应用Go

赞同来自: lucyne mygolang

很多时候我们分发的都是编译后的exe或者binary,都不会在宿主机上面安装Go环境,这也是Go流行的原因之一,方便分发,不需要再装任何的运行环境。至于分发一般我们都有一个编译分发的机器,部署只是把编译完的二进制copy到机器运行。至于怎么样cross compile 参考@seeyoup的回答

Xanthus - 红红火火恍恍惚惚

dev模式在没有go环境的机器上执行panic了,提示需要gopath
改成prod还是panic,可能是因为我加了一句orm.Debug = true
晚上回去接着试
go编译出来的二进制是不依赖go环境的。
[root@xxxxxx examples]# ldd echo
linux-vdso.so.1 => (0x00007ffedc5e6000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f313f29e000)
libc.so.6 => /lib64/libc.so.6 (0x00007f313eedc000)
/lib64/ld-linux-x86-64.so.2 (0x00007f313f4c1000)

sasaxie - Golang 真好

比如在mac开发,在linux运行,只需要将程序编译成linux版本的就可以,不用再运行机器上配置Go环境也能运行的,目前我知道的大概有两种方式:
1. 是直接去linux机器上编译,这样就可以将编译生成的可执行程序复制到其他linux运行了;
2. 是交叉编译,比如在mac上编译生成linux的可执行程序等,然后将生成的可执行程序复制到运行机器上直接运行,比如linux直接在目标目录输入
```shell
./a
```
来运行a,后台运行输入
```shell
nohup ./a &
```
,交叉编译参考1楼,感觉是对的,自己还没做过。

haoc7 - http://cuihao.fun

64位系统
```go
linux
GOOS=linux GOARCH=amd64 go build -ldflags "-w -s" -o web
windows
GOOS=windows GOARCH=amd64 go build -ldflags "-w -s" -o web
mac
GOOS=darwin GOARCH=amd64 go build -ldflags "-w -s" -o web
```

要回复问题请先登录注册