1

GOOS配置不正确遇到的一个问题

部署snaper1939 次浏览

安装revel中遇到的一个go环境配置的一个问题:

原先使用的centos linux 系统,安装配置go一切顺利,运行安装revel框架也一帆风顺。后来换了MacBook直接拷贝了centos 中的go 环境配置修改并修改了go安装路径,自己测试的go代码没有任何问题,但在安装revel框架时碰到了一个很诡异的问题。

运行 go get github.com/revel/cmd/revel命令无论如何也无法编译安装成功 revel 二进制程序。

用 go build -o bin/revel github.com/revel/cmd/revel 命令编译安装的 revel 文件存在但是无法运行使用,使用时会提示: -bash: ./revel: cannot execute binary file。

经过详细的查找对比发现,该revel二进制文件头几个字符为: ^?ELF 这是linux系统下的二进制文件开头字符,对比Mac本地已经编译好的其他二进制文件发现,Mac二进制文件头几个字符为:Ïúíþ 。

最终定位发现问题原因为:
由于配置直接拷贝了原先centos linux系统,而原系统配置中GOOS配置为:export GOOS=linux,go编译时会根据GOOS配置生成不同平台格式的二进制可执行文件;所以这里根据当前系统平台修改GOOS为: export GOOS=darwin 即可。

 

共1个回复
kevin 回复

哈哈,不经意中搞了下交叉编译啊。