go語言linux編譯 linux go語言

GO語言如何編譯發(fā)布到Linux

在命令行執(zhí)行如下指令

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、達日網(wǎng)站維護、網(wǎng)站推廣。

SET CGO_ENABLED=0

SET GOOS=linux

SET GOARCH=amd64

go build main.go? //開始編譯程序

Mac下交叉編譯linux golang程序

一、背景介紹

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

二、交叉編譯的過程

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

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

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

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

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

如何編譯arm linux的go

Golang也就是Go語言,現(xiàn)在已經(jīng)發(fā)行到1.4.1版本了,語言特性優(yōu)越性和背后Google強大靠山什么的就不多說了。Golang的官方提供了多個平臺上的二進制安裝包,遺憾的是并非沒有發(fā)布ARM平臺的二進制安裝包。ARM平臺沒辦法直接從官網(wǎng)下載二進制安裝包來安裝,好在Golang是支持多平臺并且開源的語言,因此可以通過直接在ARM平臺上編譯源代碼來安裝。整個過程主要包括編譯工具配置、獲取Golang源代碼、設(shè)置Golang編譯環(huán)境變量、編譯、配置Golang行環(huán)境變量等步驟。

注:本文選用樹莓派做測試,因為樹莓派是基于ARM平臺的。

1、編譯工具配置

據(jù)說下個版本的golang編譯工具要使用golang自己來寫,但目前還是使用C編譯工具的。因此,首先要配置好C編譯工具:

1.1 在Ubuntu或Debian平臺上可以使用sudo apt-get install gcc libc6-dev命令安裝,樹莓派的RaspBian系統(tǒng)是基于Debian修改的,所以可以使用這種方法安裝。

1.2 在RedHat或CentOS 6平臺上可以使用sudo yum install gcc libc-devel命令安裝。

安裝完成后可以輸入 gcc --version命令驗證是否成功安裝。

2、獲取golang源代碼

2.1 直接從官網(wǎng)下載源代碼壓縮包。

golang官網(wǎng)提供golang的源代碼壓縮包,可以直接下載,最新的1.4.1版本源代碼鏈接:

2.2 使用git工具獲取。

golang使用git版本管理工具,也可以使用git獲取golang源代碼。推薦使用這個方法,因為以后可以隨時獲取最新的golang源代碼。

2.2.1 首先確認(rèn)ARM平臺上已經(jīng)安裝了git工具,可以使用git --version命令確認(rèn)。一般linux平臺都安裝了git,沒有的話可以自行安裝,不同平臺的安裝方法可以參考:

2.2.2 克隆遠(yuǎn)程golang的git倉庫到本地

在終端cd到你想要安裝golang的目錄,確保該目錄下沒有名為go的目錄。然后以下命令獲取代碼倉庫:

git clone

大陸地區(qū)可能會獲取失敗,在不翻墻的情況下我試了幾次都沒成功,原因大家都懂的。好在google已經(jīng)將golang也托管到github上面,所以也可以通過下面命令獲取:

git clone

視網(wǎng)絡(luò)情況,下載可能需要不少時間。我2M的帶寬花了將近兩個小時才下載完,雖然整個項目不過幾十兆= =

下載完成后,可以看到目錄下多了一個go目錄,里面即為golang的源代碼,在終端上執(zhí)行cd go命令進入該目錄。

執(zhí)行下面命令檢出go1.4.1版本的源代碼,因為現(xiàn)在已經(jīng)有新的代碼提交上去了,最新的代碼可能不是最穩(wěn)定的:

git checkout go1.4.1

至此,最新1.4.1發(fā)行版的源代碼獲取完畢

3、設(shè)置golang的編譯環(huán)境變量

主要有GOROOT、GOOS、GOARCH、GOARM四個環(huán)境變量需要設(shè)置,先解釋四個環(huán)境變量的意義。

3.1 GOROOT

主要代表golang樹結(jié)構(gòu)目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設(shè)置這個環(huán)境變量,因為編譯的時候默認(rèn)會以go目錄下src子目錄中的all.bash腳本運行時的父目錄作為GOROOT的值。為了保險起見,可以直接設(shè)置為go目錄的路徑。

3.2 GOOS和GOARCH

分別代表編譯的目標(biāo)系統(tǒng)和平臺,可選值如下:

GOOS GOARCH

darwin 386

darwin amd64

dragonfly 386

dragonfly amd64

freebsd 386

freebsd amd64

freebsd arm

linux 386

linux amd64

linux arm

netbsd 386

netbsd amd64

netbsd arm

openbsd 386

openbsd amd64

plan9 386

plan9 amd64

solaris amd64

windows 386

windows amd64

需要注意的是這兩個值代表的是目標(biāo)系統(tǒng)和平臺,而不是編譯源代碼的系統(tǒng)和平臺。樹莓派的RaspBian是linux系統(tǒng),所以這些GOOS設(shè)置為linux,GOARCH設(shè)置為arm。

3.3 GOARM

表示使用的浮點運算協(xié)處理器版本號,只對arm平臺有用,可選值有5,6,7。如果是在目標(biāo)平臺上編譯源代碼,這個值可以不設(shè)置,它會自動判斷需要使用哪一個版本。

總結(jié)下來,在樹莓派上設(shè)置golang的編譯環(huán)境變量,可編輯$HOME/.bashrc文件,在末尾添加下面內(nèi)容:

export GOROOT=你的go目錄路徑

export GOOS=linux

export GOARCH=arm

編輯完后保存,執(zhí)行source ~/.bashrc命令讓修改生效。

4、編譯源代碼

環(huán)境變量配置完成自后就可以開始編譯源代碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個腳本(另外還有兩個all.bat和make.bat腳本適用于window平臺)。編譯實際上就是執(zhí)行其中一個腳本,兩者的區(qū)別在于all.bash在編譯完成后還會執(zhí)行一些測試套件。如果希望只編譯不測試,可以運行make.bash腳本。使用cd命令進入go下src目錄,執(zhí)行./all.bash或者./make.bash命令即可開始編譯。由于硬件情況不同,編譯耗費的時間不同。在我的B型樹莓派編譯過程花費了將近半個小時,編譯完成后執(zhí)行的測試套件又花費了差不多一個小時,總共花費了一個半小時左右。

5、配置golang運行環(huán)境變量

編譯完成后,go目錄下會生成bin目錄,里面就是go的運行腳本。為了以后使用方法,可以將這個bin路徑添加到PATH環(huán)境變量中。同樣編輯~/.bashrc文件,因為前面設(shè)置過GOROOT環(huán)境變量指向go目錄了,所以只需要在末尾加上

export PATH=$PATH:$GOROOT/bin

保存后同樣執(zhí)行source ~/.bashrc命令讓環(huán)境變量生效。

至此,golang源代碼編譯安裝成功。執(zhí)行g(shù)o version應(yīng)該就能看到當(dāng)前golang的版本信息,表示編譯安裝成功。

linux環(huán)境下golang怎么編譯exe

Linux 是不需要安裝的,直接用 chmod -x 文件名 將它的屬性修改為可運行,然后就可以通過命令行執(zhí)行它了,后綴名你改為 .sh ,這是 shell 默認(rèn)支持的文件類型

golang 跨平臺編譯

只需要指定目標(biāo)操作系統(tǒng)的平臺和處理器架構(gòu)即可:

因為不支持CGO,所以要禁用CGO

然后再執(zhí)行g(shù)o build命令,得到的就是能夠在Linux平臺運行的可執(zhí)行文件了。

Mac 下編譯 Linux 和 Windows 平臺 64位 可執(zhí)行程序:

Linux下編譯 Mac 和 Windows 平臺64位可執(zhí)行程序:

Windows下編譯Mac平臺64位可執(zhí)行程序:

整個過程看起來非常簡單,運行起來也非常簡單,調(diào)用make release命令,并給VERSION變量賦值不同的版本號即可:

命令會編譯出不同平臺可運行的壓縮包:

golang編譯linux失敗

文件權(quán)限的問題。golang編譯linux失敗多數(shù)是文件權(quán)限的問題導(dǎo)致。golang又稱go語言是一種靜態(tài)強類型、編譯型語言,是一個開源編程環(huán)境,可以輕松構(gòu)建簡單、可靠和高效的軟件。

網(wǎng)頁題目:go語言linux編譯 linux go語言
文章網(wǎng)址:http://muchs.cn/article36/doscppg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、虛擬主機小程序開發(fā)、網(wǎng)站內(nèi)鏈、定制網(wǎng)站、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名