go run go build go install 命令解釋

  • go run:go run 編譯並直接運行程序,它會產生一個臨時文件(但不會生成 .exe 文件),直接在命令行輸出程序執行結果,方便用戶調試。函數

  • go build:go build 用於測試編譯包,主要檢查是否會有編譯錯誤,若是是一個可執行文件的源碼(便是 main 包),就會直接生成一個可執行文件。測試

  • go install:go install 的做用有兩步:第一步是編譯導入的包文件,全部導入的包文件編譯完纔會編譯主程序;第二步是將編譯後生成的可執行文件放到 bin 目錄下($GOPATH/bin),編譯後的包文件放到 pkg 目錄下($GOPATH/pkg)。ui


go build與go install的

用法:命令行

go build/install <packages>

說明:<package>是從$GOPATH/src路徑下面的目錄名調試

如:code

# 編譯安裝package lib
go install lib

多個包名遞歸

# 同時編譯安裝lib2和lib/util兩個package
go install lib2 lib/util

另外,若是當前工做路徑已經在package目錄下面了,則能夠不須要指定package名,例如:編譯器

$ cd $GOPATH/lib/util
$ go install

功能:

  1. build

對於庫,只是驗證編譯可以成功,不會生成目標庫文件。源碼

對於可執行程序,會生成目標可執行文件,並放在當前目錄下面。編譯

  1. install

對於庫,會生成目標庫文件,而且放置到GOPATH/;對於可執行文件,會生成目標可執行文件,且放到GOPATH/BIN目錄下。

install 生成的包文件,其包名是以目錄名命名的。

結論

  • 對於含主函數的go文件,go build 和 go install 都能成功編譯它們並生成可執行文件,就是生成的可執行文件的地方不同

  • 對於不含主函數的go的包文件,只有 go install 能在pkg中生成包文件,而 go build 能對go的包文件起做用,就是最終文件夾和執行 go build 以前同樣,好像 go build 什麼也沒作,很迷。

go install 與 go build, 均可以生成可執行文件(生成的位置不一樣,install生成在GOPATH/BIN下,而build生成在當前目錄下);go install 能生成包文件(GOPATH/PKG下,包名和目錄名同名),但 go build 不能生成包文件

如何區分庫和可執行程序目錄

go編譯器如何區分這是一個庫目錄仍是一個可執行文件目錄,由於庫目錄須要安裝到GOPATH/pkg路徑下面,可執行程序須要安裝到GOPATH/bin路徑下面。規則就是:

  • 這個目錄的包名字是否是main。若是是,則go認爲這是一個可執行程序目錄;若是不是,go就認爲這是一個庫目錄

注意:這裏包名並非目錄名,和不和路徑相關,也就是說無論是項目頂級目錄下的main,仍是某個路徑下面的main,例如lib/main都認爲是main,只要代碼層面的名字是main,便是可執行程序。

這裏強調一點:

  • 包對應一個目錄,並不包含路徑信息。

  • 包只包含一個目錄下面的文件,並不包含子目錄。

即,每個目錄都是獨立編譯成一個包文件的,這個包文件並不包含目錄下面的子目錄,由於子目錄是另外一個獨立的包,須要獨立編譯;文件路徑上的包含關係並無包之間的包含關係,包沒有路徑遞歸這個屬性。

庫的使用

關於庫的使用,即在編譯可執行文件時如何使用庫文件,是使用的pkg目錄下的編譯好的庫.a文件,仍是src目錄下面的庫源文件,請參考下面文件連接(謝AllenRen_061d同窗指正)。

相關文章
相關標籤/搜索