一、背景介绍
创新互联建站专业为企业提供冠县网站建设、冠县做网站、冠县网站设计、冠县网站制作等企业网站建设、网页设计与制作、冠县企业网站模板建站服务,十载冠县做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
闲来无事,申请了台aws服务器在家搞点小东东,用golang做了个小东东,想放上去。自己的电脑是mac电脑,起初忘记了交叉编译的事,直接编译了下直接扔到aws,运行的时候出现了不可以运行的二进制格式提示。
二、交叉编译的过程
1、随手百度了下,很多文章都写的“CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build”(不知你搜索到的是不是这个结果),看到这也挺简单,分别是禁用cgo,指定目标系统,指定目标CPU体系架构,然后编译。
按照百度出来的建议,尝试在电脑上编译了下,提示如下错误,如果没有出现错误的可以不用往下看了哈。
2、如第一步所述,是将CGO关闭的状态,如果程序用到了CGO,是不是就需要将CGO放开?将CGO放开又会是什么现象?具体如下:
从上述的错误信息可以看出来,环境变量是生效的,确实是linux体系架构了。
3、继续百度, 终于发现这篇文章非常不错,在这里和大家分享下,按照文章的操作就可以解决问题了,而且里面有非常详细的讲解。
因为业务上的需求,架构师改了hack了一下golang的源码,放出一个patch文件,给源码打了patch之后,需要重新编译go源码,
我是用 brew 安装的golang, 先用 go env 看看
锁定了源码的路径: /usr/local/Cellar/go/1.7.5/libexec
Go从1.5版本开始实现“自举”(Bootstrap),也就是用Go来实现Go、用Go来编译Go,因此这里的意思是系统默认用go1.4来编译golang,
但是我的系统里面并没有go1.4,这里偷个懒
等待编译测试完成即可。
Mac系统下彻底删除golang的方法
首先打开终端输入命令
可以看到go的安装相关路径,一般默认情况下在是 /usr/local/go
同时可以执行命令
查看go的相关信息,以及使用命令
查看go相关的配置信息
现在正是开始怎么彻底删除Mac中的golang吧
第一步:
在root模式下删除go的安装包,执行命令:
第二步:
清除go默认的配置信息,执行命令:
第三步:
删除mac下变量环境,先打开终端命令窗口,执行命令:
删除相关信息,以下是我的信息有点多,你的安装看具体情况
以上编辑完毕后,按键盘上esc键,然后输入
保存成功
重启bash_profile,,在终端命令窗口输入如下:
ok!it's over!
我也有这方面的问题,我在mac os下:[mw_shl_code=shell,true]$ echo $GOOSwindows$ echo $GOARCH386$ go build -o hello.exe hello.go$ file hello.exehello.exe: Mach-O 64-bit executable x86_64[/mw_shl_code]