不可能。Go到目前為止,其本身就是用C寫(xiě)的。只是在語(yǔ)言層面實(shí)現(xiàn)了一些如果用C會(huì)很難寫(xiě)的feature,比如goroutine。在1.5版本中,Go會(huì)bootstraping,用Go來(lái)編譯自己。
成都創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的柘榮網(wǎng)站建設(shè)公司,柘榮接單;提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行柘榮網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
C語(yǔ)言,幾乎每種操作系統(tǒng)的系統(tǒng)調(diào)用都是C,C最大的作用就是用來(lái)實(shí)現(xiàn)新的語(yǔ)言。
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命令來(lái)編譯go代碼,至此go編譯環(huán)境就配置好了
注:如果不想手動(dòng)設(shè)置系統(tǒng)環(huán)境變量,也可下載go啟動(dòng)環(huán)境批處理附件,
修改goenv.bat文件中的GOROOT值為上面的go工作目錄后直接雙擊該bat文件,go編譯環(huán)境變量即設(shè)置完成。
4、測(cè)試go編譯環(huán)境,啟動(dòng)一個(gè)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測(cè)試程序,go語(yǔ)言包中test目錄帶有helloworld.go測(cè)試程序,源碼見(jiàn)"附一 helloworld.go",
直接調(diào)用"go build helloworld.go"就生成了"helloworld.exe"可執(zhí)行程序,運(yùn)行一下這個(gè)程序看到了我們期望的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語(yǔ)言嗎?
Go 編譯過(guò)程 九個(gè)步驟
第一步. all.bash
% cd $GOROOT/src
% ./all.bash
第一步 all.bash 只是調(diào)用了另外兩個(gè) shell 腳本:make.bash 和run.bash。若使用 Windows 或 Plan9,其過(guò)程也基本類(lèi)似,只是腳本分別以 .bat 或 .rc 結(jié)尾。在文章的其他部分,請(qǐng)用適當(dāng)?shù)牟僮飨到y(tǒng)對(duì)應(yīng)的擴(kuò)展來(lái)補(bǔ)全命令。
第二步. make.bash
. ./make.bash --no-banner
make.bash 作為 all.bash 內(nèi)容的一部分,如果它退出也會(huì)中斷構(gòu)建過(guò)程
第三步. cmd/dist
gcc -O2 -Wall -Werror -ggdb -o cmd/dist/dist -Icmd/dist cmd/dist/*.c
當(dāng)健全檢查完成后,make.bash 開(kāi)始編譯 cmd/dist。
第四步. go_bootstrap
現(xiàn)在 go_bootstrap 已經(jīng)構(gòu)建完成,make.bash 的最后一步是使用 go_bootstrap 編譯完整的 Go 標(biāo)準(zhǔn)庫(kù),包括一個(gè)完整的 go 工具用以替換。
echo "# Building packages and commands for $GOOS/$GOARCH."
"$GOTOOLDIR"/go_bootstrap install -gcflags "$GO_GCFLAGS" \
-ldflags "$GO_LDFLAGS" -v std
第五步. run.bash
現(xiàn)在 make.bash 已經(jīng)完成,回到 all.bash 的執(zhí)行,這會(huì)調(diào)用 run.bash。run.bash 的任務(wù)是編譯和測(cè)試標(biāo)準(zhǔn)庫(kù)、運(yùn)行時(shí)以及語(yǔ)言測(cè)試集。
bash run.bash --no-rebuild
由于 make.bash 和 run.bash 都會(huì)調(diào)用 go install -a std,因此需要使用 –no-rebuild 標(biāo)志來(lái)避免重復(fù)前面的步驟,–no-rebuild 跳過(guò)了第二個(gè) go install。
# allow all.bash to avoid double-build of everythingrebuild=trueif [ "$1" = "--no-rebuild" ]; then shiftelse echo '# Building packages and commands.' time go install -a -v std echofi
第六步. go test -a std
echo '# Testing packages.'
time go test std -short -timeout=$(expr 120 \* $timeout_scale)s
echo
接下來(lái) run.bash 會(huì)在標(biāo)準(zhǔn)庫(kù)里所有的包上來(lái)運(yùn)行用 testing 包編寫(xiě)的單元測(cè)試。由于 $GOPATH 和 $GOROOT 中有著相同的命名空間,所以不能直接使用 go test … 否則 $GOPATH 中的每個(gè)包也會(huì)被逐一測(cè)試,因此創(chuàng)建了一個(gè)用于標(biāo)準(zhǔn)庫(kù)中的包的別名:std。由于一些測(cè)試需要比較長(zhǎng)的時(shí)間,且會(huì)消耗大量?jī)?nèi)存,因此用 -short 標(biāo)志對(duì)一些測(cè)試進(jìn)行了過(guò)濾。
第七步. runtime 和 cgo 測(cè)試
run.bash 接下來(lái)的部分會(huì)運(yùn)行平臺(tái)對(duì) cgo 支持的測(cè)試,執(zhí)行一些性能測(cè)試,并且編譯一些伴隨 Go 發(fā)行版一起的雜項(xiàng)程序。隨著時(shí)間的流逝,這些雜項(xiàng)程序的清單會(huì)越來(lái)越長(zhǎng),那么它們也就會(huì)不可避免的被從編譯過(guò)程中悄悄剝離出去。
第八步. go run test
(xcd ../test
unset GOMAXPROCS
time go run run.go
) || exit $?
run.bash 的倒數(shù)第二步會(huì)調(diào)用在 $GOROOT 下的 test 目錄里的編譯器和運(yùn)行時(shí)的測(cè)試。他們是對(duì)于編譯器和運(yùn)行時(shí)自身的,較為低級(jí)細(xì)節(jié)的測(cè)試。會(huì)執(zhí)行語(yǔ)言規(guī)格測(cè)試,test/bugs 和 test/fixedbugs 子目錄保存有那些已經(jīng)被發(fā)現(xiàn)并被修復(fù)的問(wèn)題的獨(dú)立的測(cè)試。驅(qū)動(dòng)測(cè)試的是一個(gè)小 Go 程序 $GOROOT/test/run.go,會(huì)執(zhí)行 test 目錄里的每個(gè) .go 文件。一些 .go 文件的首行包含了指導(dǎo) run.go 對(duì)結(jié)果作出判斷的指令,例如,程序?qū)?huì)失敗,或提供一個(gè)確定的輸出隊(duì)列。
第九步. go tool api
echo '# Checking API compatibility.'
go tool api -c $GOROOT/api/go1.txt,$GOROOT/api/go1.1.txt \
-next $GOROOT/api/next.txt -except $GOROOT/api/except.txt
run.bash 的最后一步調(diào)用了 api 工具。
新聞名稱(chēng):go語(yǔ)言編譯自己 go語(yǔ)言編譯器是什么語(yǔ)言開(kāi)發(fā)的
URL標(biāo)題:http://chinadenli.net/article24/ddegoce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、靜態(tài)網(wǎng)站、用戶(hù)體驗(yàn)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)