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


 

第 1 个答案:

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


 

第 2 个答案:

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


 

第 3 个答案:

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

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


 

第 4 个答案:

我一般用个脚本: 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/


 

第 5 个答案:

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


 

第 6 个答案:

没人了解吗?


最近用vue写的一个项目,内容蛮多的,最后发现打开首页的时候超级慢,main.js有3.9MB.......有什么好的优化方案吗?网上搜的优化方法都是在vue代码的写法上的调整,还有其他可以优化速度的地方不