真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

macgo語言編譯環(huán)境 mac go語言環(huán)境搭建

Mac下交叉編譯linux golang程序

一、背景介紹

我們提供的服務(wù)有:成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、商都ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的商都網(wǎng)站制作公司

閑來無事,申請(qǐng)了臺(tái)aws服務(wù)器在家搞點(diǎn)小東東,用golang做了個(gè)小東東,想放上去。自己的電腦是mac電腦,起初忘記了交叉編譯的事,直接編譯了下直接扔到aws,運(yùn)行的時(shí)候出現(xiàn)了不可以運(yùn)行的二進(jìn)制格式提示。

二、交叉編譯的過程

?1、隨手百度了下,很多文章都寫的“CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build”(不知你搜索到的是不是這個(gè)結(jié)果),看到這也挺簡(jiǎn)單,分別是禁用cgo,指定目標(biāo)系統(tǒng),指定目標(biāo)CPU體系架構(gòu),然后編譯。

按照百度出來的建議,嘗試在電腦上編譯了下,提示如下錯(cuò)誤,如果沒有出現(xiàn)錯(cuò)誤的可以不用往下看了哈。

2、如第一步所述,是將CGO關(guān)閉的狀態(tài),如果程序用到了CGO,是不是就需要將CGO放開?將CGO放開又會(huì)是什么現(xiàn)象?具體如下:

從上述的錯(cuò)誤信息可以看出來,環(huán)境變量是生效的,確實(shí)是linux體系架構(gòu)了。

3、繼續(xù)百度, 終于發(fā)現(xiàn)這篇文章非常不錯(cuò),在這里和大家分享下,按照文章的操作就可以解決問題了,而且里面有非常詳細(xì)的講解。

mac搭建go環(huán)境報(bào)錯(cuò): go command not found

注意:以下GOPAT自己新建一個(gè)目錄,不要放在go的安裝目錄下,會(huì)報(bào)錯(cuò)

sudo vi ~/.bash_profile

export GOPATH=/Users/GoWorkEnv

export GOBIN=$GOPATH/bin

export PATH=$PATH:$GOBIN

source ~/.bash_profile

go env

正常如下:

配置軟連接

sudo ln -fs /usr/local/go/bin/go /usr/local/bin/go

ln -fs 強(qiáng)力創(chuàng)建符號(hào)連接(symlinks)

符號(hào)連接類似windows 的快捷方式

mac端 go語言環(huán)境配置問題

修改完環(huán)境變量,要執(zhí)行一個(gè)命令應(yīng)用一下

source .bash_profile

mac下打patch后編譯安裝golang

因?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來實(shí)現(xiàn)Go、用Go來編譯Go,因此這里的意思是系統(tǒng)默認(rèn)用go1.4來編譯golang,

但是我的系統(tǒng)里面并沒有g(shù)o1.4,這里偷個(gè)懶

等待編譯測(cè)試完成即可。

如何配置go語言開發(fā)環(huán)境

1.1 Go 安裝

Go的三種安裝方式

Go有多種安裝方式,你可以選擇自己喜歡的。這里我們介紹三種最常見的安裝方式:

Go源碼安裝:這是一種標(biāo)準(zhǔn)的軟件安裝方式。對(duì)于經(jīng)常使用Unix類系統(tǒng)的用戶,尤其對(duì)于開發(fā)者來說,從源碼安裝可以自己定制。

Go標(biāo)準(zhǔn)包安裝:Go提供了方便的安裝包,支持Windows、Linux、Mac等系統(tǒng)。這種方式適合快速安裝,可根據(jù)自己的系統(tǒng)位數(shù)下載好相應(yīng)的安裝包,一路next就可以輕松安裝了。**推薦這種方式**

第三方工具安裝:目前有很多方便的第三方軟件包工具,例如Ubuntu的apt-get、Mac的homebrew等。這種安裝方式適合那些熟悉相應(yīng)系統(tǒng)的用戶。

最后,如果你想在同一個(gè)系統(tǒng)中安裝多個(gè)版本的Go,你可以參考第三方工具GVM,這是目前在這方面做得最好的工具,除非你知道怎么處理。

Go源碼安裝

在Go的源代碼中,有些部分是用Plan 9 C和ATT匯編寫的,因此假如你要想從源碼安裝,就必須安裝C的編譯工具。

在Mac系統(tǒng)中,只要你安裝了Xcode,就已經(jīng)包含了相應(yīng)的編譯工具。

在類Unix系統(tǒng)中,需要安裝gcc等工具。例如Ubuntu系統(tǒng)可通過在終端中執(zhí)行sudo apt-get install gcc

libc6-dev來安裝編譯工具。

在Windows系統(tǒng)中,你需要安裝MinGW,然后通過MinGW安裝gcc,并設(shè)置相應(yīng)的環(huán)境變量。

你可以直接去官網(wǎng)下載源碼,找相應(yīng)的goVERSION.src.tar.gz的文件下載,下載之后解壓縮到$HOME目錄,執(zhí)行如下代碼:

cd go/src

./all.bash

運(yùn)行all.bash后出現(xiàn)"ALL TESTS PASSED"字樣時(shí)才算安裝成功。

上面是Unix風(fēng)格的命令,Windows下的安裝方式類似,只不過是運(yùn)行all.bat,調(diào)用的編譯器是MinGW的gcc。

如果是Mac或者Unix用戶需要設(shè)置幾個(gè)環(huán)境變量,如果想重啟之后也能生效的話把下面的命令寫到.bashrc或者.zshrc里面,

export GOPATH=$HOME/gopath

export PATH=$PATH:$HOME/go/bin:$GOPATH/bin

如果你是寫入文件的,記得執(zhí)行bash .bashrc或者bash

.zshrc使得設(shè)置立馬生效。

如果是window系統(tǒng),就需要設(shè)置環(huán)境變量,在path里面增加相應(yīng)的go所在的目錄,設(shè)置gopath變量。

當(dāng)你設(shè)置完畢之后在命令行里面輸入go,看到如下圖片即說明你已經(jīng)安裝成功

圖1.1 源碼安裝之后執(zhí)行Go命令的圖

如果出現(xiàn)Go的Usage信息,那么說明Go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了Go的安裝目錄。

關(guān)于上面的GOPATH將在下面小節(jié)詳細(xì)講解

Go標(biāo)準(zhǔn)包安裝

Go提供了每個(gè)平臺(tái)打好包的一鍵安裝,這些包默認(rèn)會(huì)安裝到如下目錄:/usr/local/go

(Windows系統(tǒng):c:\Go),當(dāng)然你可以改變他們的安裝位置,但是改變之后你必須在你的環(huán)境變量中設(shè)置如下信息:

export GOROOT=$HOME/go

export GOPATH=$HOME/gopath

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

上面這些命令對(duì)于Mac和Unix用戶來說最好是寫入.bashrc或者.zshrc文件,對(duì)于windows用戶來說當(dāng)然是寫入環(huán)境變量。

如何判斷自己的操作系統(tǒng)是32位還是64位?

我們接下來的Go安裝需要判斷操作系統(tǒng)的位數(shù),所以這小節(jié)我們先確定自己的系統(tǒng)類型。

Windows系統(tǒng)用戶請(qǐng)按Win+R運(yùn)行cmd,輸入systeminfo后回車,稍等片刻,會(huì)出現(xiàn)一些系統(tǒng)信息。在“系統(tǒng)類型”一行中,若顯示“x64-based

PC”,即為64位系統(tǒng);若顯示“X86-based PC”,則為32位系統(tǒng)。

Mac系統(tǒng)用戶建議直接使用64位的,因?yàn)镚o所支持的Mac OS X版本已經(jīng)不支持純32位處理器了。

Linux系統(tǒng)用戶可通過在Terminal中執(zhí)行命令arch(即uname

-m)來查看系統(tǒng)信息:

64位系統(tǒng)顯示

x86_64

32位系統(tǒng)顯示

i386

Mac 安裝

訪問下載地址,32位系統(tǒng)下載go1.4.2.darwin-386-osx10.8.pkg,64位系統(tǒng)下載go1.4.2.darwin-amd64-osx10.8.pkg,雙擊下載文件,一路默認(rèn)安裝點(diǎn)擊下一步,這個(gè)時(shí)候go已經(jīng)安裝到你的系統(tǒng)中,默認(rèn)已經(jīng)在PATH中增加了相應(yīng)的~/go/bin,這個(gè)時(shí)候打開終端,輸入go

看到類似上面源碼安裝成功的圖片說明已經(jīng)安裝成功

如果出現(xiàn)go的Usage信息,那么說明go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了go的安裝目錄。

Linux 安裝

訪問下載地址,32位系統(tǒng)下載go1.4.2.linux-386.tar.gz,64位系統(tǒng)下載go1.4.2.linux-amd64.tar.gz,

假定你想要安裝Go的目錄為 $GO_INSTALL_DIR,后面替換為相應(yīng)的目錄路徑。

解壓縮tar.gz包到安裝目錄下:tar zxvf go1.4.2.linux-amd64.tar.gz -C

$GO_INSTALL_DIR。

設(shè)置PATH,export PATH=$PATH:$GO_INSTALL_DIR/go/bin

然后執(zhí)行g(shù)o

圖1.2 Linux系統(tǒng)下安裝成功之后執(zhí)行g(shù)o顯示的信息

如果出現(xiàn)go的Usage信息,那么說明go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了go的安裝目錄。

Windows 安裝

訪問Google Code 下載頁,32

位請(qǐng)選擇名稱中包含 windows-386 的 msi 安裝包,64 位請(qǐng)選擇名稱中包含 windows-amd64 的。下載好后運(yùn)行,不要修改默認(rèn)安裝目錄

C:\Go\,若安裝到其他位置會(huì)導(dǎo)致不能執(zhí)行自己所編寫的 Go 代碼。安裝完成后默認(rèn)會(huì)在環(huán)境變量 Path 后添加 Go 安裝目錄下的 bin 目錄

C:\Go\bin\,并添加環(huán)境變量 GOROOT,值為 Go 安裝根目錄 C:\Go\ 。

驗(yàn)證是否安裝成功

在運(yùn)行中輸入 cmd 打開命令行工具,在提示符下輸入 go,檢查是否能看到 Usage 信息。輸入

cd %GOROOT%,看是否能進(jìn)入 Go 安裝目錄。若都成功,說明安裝成功。

不能的話請(qǐng)檢查上述環(huán)境變量 Path 和 GOROOT 的值。若不存在請(qǐng)卸載后重新安裝,存在請(qǐng)重啟計(jì)算機(jī)后重試以上步驟。

第三方工具安裝

GVM

gvm是第三方開發(fā)的Go多版本管理工具,類似ruby里面的rvm工具。使用起來相當(dāng)?shù)姆奖?,安裝gvm使用如下命令:

bash (curl -s -S -L )

安裝完成后我們就可以安裝go了:

gvm install go1.4.2

gvm use go1.4.2

也可以使用下面的命令,省去每次調(diào)用gvm use的麻煩: gvm use go1.4.2 --default

執(zhí)行完上面的命令之后GOPATH、GOROOT等環(huán)境變量會(huì)自動(dòng)設(shè)置好,這樣就可以直接使用了。

apt-get

Ubuntu是目前使用最多的Linux桌面系統(tǒng),使用apt-get命令來管理軟件包,我們可以通過下面的命令來安裝Go,為了以后方便,應(yīng)該把

git mercurial 也安裝上:

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:gophers/go

sudo apt-get update

sudo apt-get install golang-stable git-core mercurial

homebrew

homebrew是Mac系統(tǒng)下面目前使用最多的管理軟件的工具,目前已支持Go,可以通過命令直接安裝Go,為了以后方便,應(yīng)該把

git mercurial 也安裝上:

brew update brew upgrade

brew install go

brew install git

brew install mercurial

如何在Mac源碼安裝Go1.5開發(fā)環(huán)境

Go1.5開發(fā)環(huán)境依賴Go1.4版本作為引導(dǎo),因?yàn)镚o1.5使用Go本身來編譯安裝Go,所以必須保證服務(wù)器上已經(jīng)安裝Go1.4,這完全是為了解決先有雞還是先有蛋的問題,當(dāng)然如果你想避免編譯安裝1.4也可以直接使用二進(jìn)制包。

在這里假設(shè)你希望將go1.5安裝到$HOME/go1.5目錄下,只需要以下幾步:

下載Go1.5的源碼放到$HOME/go1.5目錄下

在安裝Go1.5之前需要將Go1.4放到$HOME/go1.4下面或者export GOROOT_BOOTSTRAP=/go1.4安裝目錄/

到$HOME/go1.5/src/下執(zhí)行all.bash即可

我習(xí)慣將軟件安裝至/usr/local/下,以下為我安裝Go1.5(/usr/local/go1.5)的步驟:

wget

tar zxvf go1.5.1.src.tar.gz

mv ./go /usr/local/go1.5

wget

tar zxvf go1.4.3.src.tar.gz

mv ./go /usr/local/go-bootstrap1.4/

cd /usr/local/go-bootstrap1.4/src

./all.bash //編譯安裝Go1.4,有可能test不通過,只要編譯通過,test可忽略,目的是需要go1.4的二進(jìn)制包來編譯1.5

cd /usr/local/go1.5/src

GOROOT_BOOTSTRAP=/usr/local/go-bootstrap1.4 ./all.bash

//可在環(huán)境變量中添加GOROOT_BOOTSTRAP,然后再編譯Go1.5

以下為網(wǎng)摘:

From C to Go

The gc tool chain is being converted from C to Go.

An ongoing process, started early 2014.

Russ Cox says "It'll be done by March [2015]."

New link tool to replace 6l, 8l, etc.

New asm tool to replace 6a, 8a, etc.

Machine-translated gc to replace 6g, 8g, etc.

Design doc:

golang.org/s/go13compiler

Go 1.5 will have no C code in the tool chain or runtime.

Go語言將使用Go代替C重寫運(yùn)行時(shí)環(huán)境

Go 1.4 的合并窗口在 9 月份將關(guān)閉,從現(xiàn)在開始到12月份發(fā)布 Go 1.4 之前將只接受 bug 修復(fù)和小調(diào)整。

Go 1.4 最主要的變化是將使用 Go 語言本身來重寫 Go 的運(yùn)行時(shí),而之前是采用 C 語言開發(fā)。這也是為什么 Go 的發(fā)行版中包含一個(gè) C

編譯器的原因。

使用 Go 重寫的好處是:

當(dāng)前如果在 Goroutine 的調(diào)用堆棧中發(fā)現(xiàn) C 代碼,runtime 將在需要增長(zhǎng)堆棧時(shí)回滾到老的堆棧方法。如果使用 Go 來重寫

runtime,那么堆??截惖姆椒ň蜁?huì)更加高效

目前轉(zhuǎn)換工作只計(jì)劃轉(zhuǎn) Go 編譯器 (5g, 6g, 8g), 而不是 C 編譯器,降低運(yùn)行時(shí)中的 C 代碼行數(shù),甚至可能完全清除

注意

這是 golang.org 分發(fā)版,也就是 gc ,而不是 gccgo

這是不同的 C 編譯器,gc 工具鏈將使用你系統(tǒng)的 C 編譯器來編譯,gc 運(yùn)行時(shí)則使用它的 C 編譯器來編譯

8月20日后增加的轉(zhuǎn)換行可能跟 this request 有關(guān).

Go語言將使用Go代替C重寫運(yùn)行時(shí)環(huán)境

— 從現(xiàn)在開始到12月份 Go 1.4版本發(fā)布前,Go將只接受Bug修復(fù)和小范圍的調(diào)整,Go

1.4版本將實(shí)現(xiàn)使用Go語言來重寫Go的運(yùn)行時(shí)環(huán)境。


文章名稱:macgo語言編譯環(huán)境 mac go語言環(huán)境搭建
本文地址:http://weahome.cn/article/hidjgo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部