go語言編譯過程概述 go語言 編譯

如何編譯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源代碼、設置Golang編譯環(huán)境變量、編譯、配置Golang行環(huán)境變量等步驟。

目前創(chuàng)新互聯(lián)已為成百上千家的企業(yè)提供了網(wǎng)站建設、域名、虛擬空間、網(wǎng)站運營、企業(yè)網(wǎng)站設計、五大連池網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

注:本文選用樹莓派做測試,因為樹莓派是基于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 首先確認ARM平臺上已經(jīng)安裝了git工具,可以使用git --version命令確認。一般linux平臺都安裝了git,沒有的話可以自行安裝,不同平臺的安裝方法可以參考:

2.2.2 克隆遠程golang的git倉庫到本地

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

git clone

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

git clone

視網(wǎng)絡情況,下載可能需要不少時間。我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、設置golang的編譯環(huán)境變量

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

3.1 GOROOT

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

3.2 GOOS和GOARCH

分別代表編譯的目標系統(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

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

3.3 GOARM

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

總結(jié)下來,在樹莓派上設置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文件,因為前面設置過GOROOT環(huán)境變量指向go目錄了,所以只需要在末尾加上

export PATH=$PATH:$GOROOT/bin

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

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

Go 是怎么使用 Go 來編譯自身的

Go是一個圖靈完備的語言

任何圖靈完備的語言理論上都可以用來編譯自身。比如c/c++, java, vb, php等等都可以。

至于怎么編譯自身的:

用其它語言比如c++實現(xiàn)一個[Go語言編譯器-1]

用Go語言寫一個[Go語言編譯器-2]

用這個c++實現(xiàn)的[Go語言編譯器-1]編譯第2步里面說的Go語言寫的[Go語言編譯器-2]

用第3步得到的[Go語言編譯器-2],再編譯一次第2步里面說的[Go語言編譯器-2]的源碼。

OK,現(xiàn)在有一個Go語言實現(xiàn)的編譯器了,最開始那個c++寫的編譯器沒用了,可以扔掉不要了。以后就不停的優(yōu)化使用這個Go語言實現(xiàn)的自身的編譯器就行了。

windows 怎么編譯 go語言

1、解壓壓縮包到go工作目錄,如解壓到E:\opensource\go\go,解壓后的目錄結(jié)構(gòu)如下:

E:\opensource\go\go

├─api

├─bin

│ ├─go.exe

│ ├─godoc.exe

│ └─gofmt.exe

├─doc

├─include

├─lib

├─misc

├─pkg

├─src

└─test

2、增加環(huán)境變量GOROOT,取值為上面的go工作目錄

3、Path環(huán)境變量中添加";%GOROOT%\bin",以便能夠直接調(diào)用go命令來編譯go代碼,至此go編譯環(huán)境就配置好了

注:如果不想手動設置系統(tǒng)環(huán)境變量,也可下載go啟動環(huán)境批處理附件,

修改goenv.bat文件中的GOROOT值為上面的go工作目錄后直接雙擊該bat文件,go編譯環(huán)境變量即設置完成。

4、測試go編譯環(huán)境,啟動一個cmd窗口,直接輸入go,看到下面的提示就是搭建成功了

E:\opensource\go\gogo

Go is a tool for managing Go source code.

Usage:

go command [arguments]

The commands are:

build compile packages and dependencies

clean remove object files

doc run godoc on package sources

env print Go environment information

fix run go tool fix on packages

fmt run gofmt on package sources

get download and install packages and dependencies

install compile and install packages and dependencies

list list packages

run compile and run Go program

test test packages

tool run specified go tool

version print Go version

vet run go tool vet on packages

Use "go help [command]" for more information about a command.

Additional help topics:

gopath GOPATH environment variable

packages description of package lists

remote remote import path syntax

testflag description of testing flags

testfunc description of testing functions

Use "go help [topic]" for more information about that topic.

5、編譯helloworld測試程序,go語言包中test目錄帶有helloworld.go測試程序,源碼見"附一 helloworld.go",

直接調(diào)用"go build helloworld.go"就生成了"helloworld.exe"可執(zhí)行程序,運行一下這個程序看到了我們期望的hello,wolrd。

E:\opensource\go\go\testgo build helloworld.go

E:\opensource\go\go\testhelloworld.exe

hello, world

E:\opensource\go\go\test

附一 helloworld.go

// cmpout

// Copyright 2009 The Go Authors. All rights reserved.

// Use of this source code is governed by a BSD-style

// license that can be found in the LICENSE file.

// Test that we can do page 1 of the C book.

package main

func main() {

print("hello, world\n")

}

如何學習GO語言?

Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎(chǔ)的讀者快速入門,也適合工作多年的程序員查閱知識點。

Go 語言

這套教程在講解一些知識點時,將 Go 語言和其他多種語言進行對比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發(fā),無須第三方庫、開發(fā)者的編程技巧和開發(fā)經(jīng)驗就可以輕松搞定。

Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對外發(fā)布。Go 是非常年輕的一門語言,它的主要目標是“兼具 Python 等動態(tài)語言的開發(fā)速度和 C/C++ 等編譯型語言的性能與安全性”。

Go語言是編程語言設計的又一次嘗試,是對類C語言的重大改進,它不但能讓你訪問底層操作系統(tǒng),還提供了強大的網(wǎng)絡編程和并發(fā)編程支持。Go語言的用途眾多,可以進行網(wǎng)絡編程、系統(tǒng)編程、并發(fā)編程、分布式編程。

Go語言的推出,旨在不損失應用程序性能的情況下降低代碼的復雜性,具有“部署簡單、并發(fā)性好、語言設計良好、執(zhí)行性能好”等優(yōu)勢,目前國內(nèi)諸多 IT 公司均已采用Go語言開發(fā)項目。Go語言有時候被描述為“C 類似語言”,或者是“21 世紀的C語言”。Go 從C語言繼承了相似的表達式語法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語言一直所看中的編譯后機器碼的運行效率以及和現(xiàn)有操作系統(tǒng)的無縫適配。

因為Go語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實現(xiàn)多態(tài)性。Go語言有一個清晰易懂的輕量級類型系統(tǒng),在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。

此外,很多重要的開源項目都是使用Go語言開發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進制(或字節(jié)碼)格式;在編譯代碼時,編譯器檢查錯誤、優(yōu)化性能并輸出可在不同平臺上運行的二進制文件。要創(chuàng)建并運行 Go 程序,程序員必須執(zhí)行如下步驟。

使用文本編輯器創(chuàng)建 Go 程序;

保存文件;編譯程序;運行編譯得到的可執(zhí)行文件。

這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨安裝編譯器。

鏈喬教育在線旗下學碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國教育部學校規(guī)劃建設發(fā)展中心開展的“智慧學習工場2020-學碩創(chuàng)新工作站 ”唯一獲準的“區(qū)塊鏈技術(shù)專業(yè)”試點工作站。專業(yè)站立足為學生提供多樣化成長路徑,推進專業(yè)學位研究生產(chǎn)學研結(jié)合培養(yǎng)模式改革,構(gòu)建應用型、復合型人才培養(yǎng)體系。

本文題目:go語言編譯過程概述 go語言 編譯
文章轉(zhuǎn)載:http://muchs.cn/article6/ddcddog.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、定制開發(fā)、電子商務微信小程序、品牌網(wǎng)站建設、移動網(wǎng)站建設

廣告

聲明:本網(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)站建設