求助帖,golang mac 交叉编译linux, linux无法运行

go版本 1.9.2
本机环境可以正常编译运行
执行

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

编译出来的文件本机不可执行
放到linux上也不能执行
但是在windows系统下
执行

set CGO_ENABLED=0
set GOOS=linux
set GOARCH=amd64
go build

编译出来的文件在linux上是可执行的
mac下编译linux是还需要做其他工作吗?
在linux运行提示 段错误
求解啊!

求助啊!!!!! T.T

共 6 个回复


seefan

你放linux上编译就行了,服务器的cpu有至强的,mac编译的运行不了。

# 0

holdno

可是我用公司的mac交叉编译后 linux就可以运行啊
难道因为放在公司的15pro
家里的是13pro?

# 1

MarksGui

mac下直接运行 :CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build 就可以了! 你如果以前在服务器上运行过同样的程序,那么再次编译后需要先手动结束之前的进程

# 2

holdno

然而我的一台macbook 13寸编译后 发布到linux 运行提示段错误

# 3

Zhangyc310

错误提示是什么?可能默认的linux有个包没有安装

# 4

seefan

再次提醒哈,重点是cpu的类型不同,同样是x64,但内核还是不同的,单用amd64是不能区分的。我的解决办法就是直接到那台至强的机器上编,就可以分发了。32位没有这个问题。

# 5