go語言編譯目標文件 go項目編譯

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

是Go語言嗎?

10余年的交城網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網營銷推廣的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整交城建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯從事“交城網站設計”,“交城網站推廣”以來,每個客戶項目都認真落實執行。

Go 編譯過程 九個步驟

第一步. all.bash

% cd $GOROOT/src

% ./all.bash

第一步 all.bash 只是調用了另外兩個 shell 腳本:make.bash 和run.bash。若使用 Windows 或 Plan9,其過程也基本類似,只是腳本分別以 .bat 或 .rc 結尾。在文章的其他部分,請用適當的操作系統對應的擴展來補全命令。

第二步. make.bash

. ./make.bash --no-banner

make.bash 作為 all.bash 內容的一部分,如果它退出也會中斷構建過程

第三步. cmd/dist

gcc -O2 -Wall -Werror -ggdb -o cmd/dist/dist -Icmd/dist cmd/dist/*.c

當健全檢查完成后,make.bash 開始編譯 cmd/dist。

第四步. go_bootstrap

現在 go_bootstrap 已經構建完成,make.bash 的最后一步是使用 go_bootstrap 編譯完整的 Go 標準庫,包括一個完整的 go 工具用以替換。

echo "# Building packages and commands for $GOOS/$GOARCH."

"$GOTOOLDIR"/go_bootstrap install -gcflags "$GO_GCFLAGS" \

-ldflags "$GO_LDFLAGS" -v std

第五步. run.bash

現在 make.bash 已經完成,回到 all.bash 的執行,這會調用 run.bash。run.bash 的任務是編譯和測試標準庫、運行時以及語言測試集。

bash run.bash --no-rebuild

由于 make.bash 和 run.bash 都會調用 go install -a std,因此需要使用 –no-rebuild 標志來避免重復前面的步驟,–no-rebuild 跳過了第二個 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

接下來 run.bash 會在標準庫里所有的包上來運行用 testing 包編寫的單元測試。由于 $GOPATH 和 $GOROOT 中有著相同的命名空間,所以不能直接使用 go test … 否則 $GOPATH 中的每個包也會被逐一測試,因此創建了一個用于標準庫中的包的別名:std。由于一些測試需要比較長的時間,且會消耗大量內存,因此用 -short 標志對一些測試進行了過濾。

第七步. runtime 和 cgo 測試

run.bash 接下來的部分會運行平臺對 cgo 支持的測試,執行一些性能測試,并且編譯一些伴隨 Go 發行版一起的雜項程序。隨著時間的流逝,這些雜項程序的清單會越來越長,那么它們也就會不可避免的被從編譯過程中悄悄剝離出去。

第八步. go run test

(xcd ../test

unset GOMAXPROCS

time go run run.go

) || exit $?

run.bash 的倒數第二步會調用在 $GOROOT 下的 test 目錄里的編譯器和運行時的測試。他們是對于編譯器和運行時自身的,較為低級細節的測試。會執行語言規格測試,test/bugs 和 test/fixedbugs 子目錄保存有那些已經被發現并被修復的問題的獨立的測試。驅動測試的是一個小 Go 程序 $GOROOT/test/run.go,會執行 test 目錄里的每個 .go 文件。一些 .go 文件的首行包含了指導 run.go 對結果作出判斷的指令,例如,程序將會失敗,或提供一個確定的輸出隊列。

第九步. 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 的最后一步調用了 api 工具。

go語言 一個主package包引入同級目錄下go文件包編譯出錯!!

go語言 一個主package包引入同級目錄下go文件包編譯出錯是設置錯誤造成的,解決方法為:

1、先使用import "strings"導入strings庫。

2、HasPrefix?判斷字符串?s?是否以?prefix?開頭。

3、HasSuffix?判斷字符串?s?是否以?suffix?結尾。

4、可以看看判斷的代碼。

5、在cmd下運行一下go run test.go,看看如下結果。

6、Contains?判斷字符串?s?是否包含?substr,也就是判斷一下S是否在strings中。

7、在cmd下運行go run test.go看看結果。

go編譯整個文件夾

Copyright ? 1999-2020, CSDN.NET, All Rights Reserved

打開APP

銀色種子

關注

go 編譯步驟 原創

2021-04-23 16:29:49

銀色種子

碼齡7年

關注

## go 步驟

```

/*

Go項目構建及編譯

一個Go工程中主要包含以下三個目錄:

src:源代碼文件

pkg:包文件

bin:相關bin文件

1: 建立工程文件夾 goproject

2: 在工程文件夾中建立src,pkg,bin文件夾

3: 在GOPATH中添加projiect路徑 例 e:/goproject

4: 如工程中有自己的包examplepackage,那在src文件夾下建立以包名命名的文件夾 例 examplepackage

5:在src文件夾下編寫主程序代碼代碼 goproject.go

6:在examplepackage文件夾中編寫 examplepackage.go 和 包測試文件 examplepackage_test.go

7:編譯調試包

go build examplepackage

go test examplepackage

go install examplepackage

這時在pkg文件夾中可以發現會有一個相應的操作系統文件夾如windows_386z,

在這個文件夾中會有examplepackage文件夾,在該文件中有examplepackage.a文件

8:編譯主程序

go build goproject.go

成功后會生成goproject.exe文件

至此一個Go工程編輯成功。

*/

Go語言編譯成aar并調試

go及gomobile的環境配置這里就不介紹了,直接說aar的生成和使用。

1. 設置環境變量GOPATH

GOPATH的值可以有多個,用半角分號間隔,但不能以其結束,設置完成后需要重新做 gomobile init 。

2. 在GOPATH里創建src文件夾,用于存放go的包和源文件

3. 在src中創建hello文件夾(go文件的包名)

4. 在hello中創建hello.go文件,并輸入內容

5. 編譯

執行命令: gomobile bind -target=android hello

會生成一個hello.aar文件

6. 導入到android工程

將hello.aar文件放入工程的libs中,并配置build.gradle

在根結點加入:

在dependencies結點下加入依賴:

7. 在Java中測試

運行后,結果會輸出 Hello, Android and Gopher

golang 跨平臺編譯

只需要指定目標操作系統的平臺和處理器架構即可:

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

然后再執行go build命令,得到的就是能夠在Linux平臺運行的可執行文件了。

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

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

Windows下編譯Mac平臺64位可執行程序:

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

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

windows 怎么編譯 go語言

1、解壓壓縮包到go工作目錄,如解壓到E:\opensource\go\go,解壓后的目錄結構如下:

E:\opensource\go\go

├─api

├─bin

│ ├─go.exe

│ ├─godoc.exe

│ └─gofmt.exe

├─doc

├─include

├─lib

├─misc

├─pkg

├─src

└─test

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

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

注:如果不想手動設置系統環境變量,也可下載go啟動環境批處理附件,

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

4、測試go編譯環境,啟動一個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",

直接調用"go build helloworld.go"就生成了"helloworld.exe"可執行程序,運行一下這個程序看到了我們期望的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項目編譯
本文鏈接:http://m.kartarina.com/article0/hgpoio.html

成都網站建設公司_創新互聯,為您提供企業網站制作搜索引擎優化云服務器服務器托管品牌網站建設

廣告

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

搜索引擎優化
主站蜘蛛池模板: 亚洲私人无码综合久久网| 国产爆乳无码视频在线观看3| 日韩AV无码一区二区三区不卡毛片| 亚洲国产成人无码AV在线影院| 国产精品无码免费视频二三区| 伊人久久精品无码二区麻豆| 无码国内精品久久综合88| 无码av不卡一区二区三区| 无套中出丰满人妻无码| 无码专区一va亚洲v专区在线 | 亚洲VA中文字幕不卡无码| 人妻精品久久无码专区精东影业 | 久久久久久无码国产精品中文字幕| 亚洲精品无码永久中文字幕| 国产精品无码制服丝袜| 色综合久久久无码网中文| 无码人妻精品一区二区在线视频| 免费一区二区无码视频在线播放 | 一本久道中文无码字幕av| 麻豆亚洲AV永久无码精品久久| 中文字幕乱码无码人妻系列蜜桃| 国产精品无码一区二区三区不卡 | 无码人妻精品中文字幕免费东京热 | 东京热无码一区二区三区av| 成人免费无码精品国产电影| 无码一区二区三区爆白浆| 精品无码人妻一区二区免费蜜桃 | 亚洲一区二区无码偷拍| 亚洲AV无码专区电影在线观看| 亚洲伊人成无码综合网| 无码综合天天久久综合网| 免费看无码自慰一区二区| 久久久精品天堂无码中文字幕| 亚洲AV日韩AV无码污污网站| 18精品久久久无码午夜福利| 人妻少妇偷人精品无码 | 亚洲AV无码精品无码麻豆| 国模吧无码一区二区三区| 亚洲精品午夜无码电影网| 亚洲中文字幕无码一区二区三区 | 亚洲成AV人在线播放无码|