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

阅读 14.4k
6 个回答

源码目录执行,亲测可用
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build gofile.go

我是这么编译的
在你的项目目录下
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-w' -o 打包名称 ./main.go
没有问题的

github有现成的用于多平台交叉编译的package

具体请看:https://segmentfault.com/a/11...

另外,具体编译参数怎么设置,也可以在gox的源码中找到答案

我一般用个脚本: build.ps1
一般拷过去就好了
osx一般要这么写:

export GOOS="windows"
go build -o phoneix-windows.exe

export GOOS="linux"
go build -o phoneix-linux

export GOOS="darwin"
go build -o phoneix-darwin

echo "done!"

环境设置

gopath
|-- src/domain/project/subpackage

执行目录为src/domain/project/

段错误是访问了错误的内存段,我估计是楼主程序问题,而不是交叉编译问题.

没人了解吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题