1、解壓壓縮包到go工作目錄,如解壓到E:\opensource\go\go,解壓后的目錄結(jié)構(gòu)如下:
墨玉網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司從2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
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)境就配置好了
注:如果不想手動設(shè)置系統(tǒng)環(huán)境變量,也可下載go啟動環(huán)境批處理附件,
修改goenv.bat文件中的GOROOT值為上面的go工作目錄后直接雙擊該bat文件,go編譯環(huán)境變量即設(shè)置完成。
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 語言和 C 語言的一個很大的區(qū)別是, Go 語言只靜態(tài)編譯,做個測試:
一方面是 Go 語言編譯后的可執(zhí)行文件大小比 C 語言的大很多,
另一方面是 C 語言的可執(zhí)行文件需要依賴 glibc 動態(tài)庫,
用 ldd 命令可以看出來:
或者直接刪除 glibc 動態(tài)庫, C 可執(zhí)行程序報錯,而 Go 的還能運行:
這時候只有內(nèi)部命令可以運行,外部命令,包括 ln 甚至最常用的 ls 命令也不能運行了:
設(shè)置好 LD_PRELOAD 環(huán)境變量之后, ln 命令可以運行,但是 sudo 仍然不能運行
只能靠 root 用戶來重新創(chuàng)建軟連接了:
所以用 sudo 來 rm 文件要小心,還是用 root 比較好。如果沒有預(yù)先留一個打開的 root 終端,登錄都登不進去。
在命令行執(zhí)行如下指令
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go? //開始編譯程序
只需要指定目標(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變量賦值不同的版本號即可:
命令會編譯出不同平臺可運行的壓縮包: