一、背景介紹
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供冠縣網(wǎng)站建設(shè)、冠縣做網(wǎng)站、冠縣網(wǎng)站設(shè)計(jì)、冠縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、冠縣企業(yè)網(wǎng)站模板建站服務(wù),十載冠縣做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
閑來(lái)無(wú)事,申請(qǐng)了臺(tái)aws服務(wù)器在家搞點(diǎn)小東東,用golang做了個(gè)小東東,想放上去。自己的電腦是mac電腦,起初忘記了交叉編譯的事,直接編譯了下直接扔到aws,運(yùn)行的時(shí)候出現(xiàn)了不可以運(yùn)行的二進(jìn)制格式提示。
二、交叉編譯的過(guò)程
?1、隨手百度了下,很多文章都寫的“CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build”(不知你搜索到的是不是這個(gè)結(jié)果),看到這也挺簡(jiǎn)單,分別是禁用cgo,指定目標(biāo)系統(tǒng),指定目標(biāo)CPU體系架構(gòu),然后編譯。
按照百度出來(lái)的建議,嘗試在電腦上編譯了下,提示如下錯(cuò)誤,如果沒(méi)有出現(xiàn)錯(cuò)誤的可以不用往下看了哈。
2、如第一步所述,是將CGO關(guān)閉的狀態(tài),如果程序用到了CGO,是不是就需要將CGO放開?將CGO放開又會(huì)是什么現(xiàn)象?具體如下:
從上述的錯(cuò)誤信息可以看出來(lái),環(huán)境變量是生效的,確實(shí)是linux體系架構(gòu)了。
3、繼續(xù)百度, 終于發(fā)現(xiàn)這篇文章非常不錯(cuò),在這里和大家分享下,按照文章的操作就可以解決問(wèn)題了,而且里面有非常詳細(xì)的講解。
因?yàn)闃I(yè)務(wù)上的需求,架構(gòu)師改了hack了一下golang的源碼,放出一個(gè)patch文件,給源碼打了patch之后,需要重新編譯go源碼,
我是用 brew 安裝的golang, 先用 go env 看看
鎖定了源碼的路徑: /usr/local/Cellar/go/1.7.5/libexec
Go從1.5版本開始實(shí)現(xiàn)“自舉”(Bootstrap),也就是用Go來(lái)實(shí)現(xiàn)Go、用Go來(lái)編譯Go,因此這里的意思是系統(tǒng)默認(rèn)用go1.4來(lái)編譯golang,
但是我的系統(tǒng)里面并沒(méi)有g(shù)o1.4,這里偷個(gè)懶
等待編譯測(cè)試完成即可。
Mac系統(tǒng)下徹底刪除golang的方法
首先打開終端輸入命令
可以看到go的安裝相關(guān)路徑,一般默認(rèn)情況下在是?/usr/local/go
同時(shí)可以執(zhí)行命令
查看go的相關(guān)信息,以及使用命令
查看go相關(guān)的配置信息
現(xiàn)在正是開始怎么徹底刪除Mac中的golang吧
第一步:
在root模式下刪除go的安裝包,執(zhí)行命令:
第二步:
清除go默認(rèn)的配置信息,執(zhí)行命令:
第三步:
刪除mac下變量環(huán)境,先打開終端命令窗口,執(zhí)行命令:
刪除相關(guān)信息,以下是我的信息有點(diǎn)多,你的安裝看具體情況
以上編輯完畢后,按鍵盤上esc鍵,然后輸入
保存成功
重啟bash_profile,,在終端命令窗口輸入如下:
ok!it's over!
我也有這方面的問(wèn)題,我在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]