go1.9後預設利用go語言的併發特性進行函式粒度的併發編譯。
go語言的程式編寫基本以原始碼方式,無論是自己的**還是三方**,並且以gopath作為工作目錄和一套完整的工程目錄規則。
主要用於編譯**,在包的編譯過程中,若有必要,會同時編譯與之相關聯的包。
無引數編譯、檔案列表編譯、指定包編譯、使用這些方法都可以輸出可執行檔案。
無引數編譯
在**所在的目錄直接使用go build 命令,後面不跟任何引數
如果原始碼中沒有依賴 gopath 的包引用,那麼這些原始碼可以使用無引數 go build
原理:搜尋當前目錄的 go 原始碼,編譯檔案後,生成當前目錄名的可執行檔案
並放置於當前目錄下
go build+檔案列表
go build 的後面提供多個檔名,go build 會編譯這些原始碼,輸出可執行檔案
提示&注意:
1、使用「go build+檔案列表」方式編譯時,可執行檔案預設選擇檔案列表中第乙個原始碼檔案作為可執行檔名輸出。
如果需要指定輸出可執行檔名稱,可以使用-o引數
2、使用go build + 檔案列表編譯方式編譯時,檔案列表中的每個檔案必須時同乙個包的go原始碼
3、此中編譯方式,更適合使用go語言編寫的只有少量檔案的工具
1.設定環境變數gopath
2.go build -o 指定輸出檔名,後面接著編譯的包名,包名是相對於gopath的src目錄開始的,這個編譯可以在任何位置進行編譯
3.包名和包所在的目錄名保持一致,另外如果包名和所在的目錄名不同,只要使用的包名和原始碼中的package後的名字保持一致
,仍然沒有問題,這裡面涉及到乙個import包的原理????
go build編譯時的附加引數,按使用頻率排列
附加引數 備 注
-v 編譯時顯示包名
-p n 開啟併發編譯,預設情況下該值為 cpu 邏輯核數
-a 強制重新構建
-n 列印編譯時會用到的所有命令,但不真正執行
-x 列印編譯時會用到的所有命令
-race 開啟競態檢測
python、lua語言可以在不輸出二進位制的情況下,將**使用虛擬機器直接執行。go語言雖然不使用虛擬機器,但可以使用go run指令達到同樣的效果。
會直接編譯原始碼,並且直接執行原始碼的main函式,不會在當前目錄留下可執行檔案,可執行檔案被放在臨時檔案中被執行,工作目錄被設定成當前目錄
。在go run的後部可以新增引數,這部分引數會作為**可以接受的命令列輸入
提供給程式。
不能使用go run + 包的方式進行編譯,需要使用go build進行包編譯,然後再執行可執行檔案。
Go 基本命令
go build 如果是main包,當你執行go build之後,它就會在當前目錄下生成乙個可執行檔案。如果你需要在 gopath bin下生成相應的檔案,需要執行go install,或者使用go build o 路徑 a.exe。如果某個專案資料夾下有多個檔案,而你只想編譯某個檔案,就可在go ...
go基本命令和包解析
b 命令 b 在命令列或終端輸入 go 即可檢視所有支援的命令 b 常用命令簡介 b go get 獲取遠端包 需安裝git或hg go run 直接執行程式 go build 測試編譯,檢查是否有編譯錯誤 go fmt 格式化原始碼 部分ide在儲存時自動呼叫 go install 編譯包檔案並編...
06 Go語言基本命令
以windows為例,在dos視窗輸入go 1 go is a tool for managing go source code.2usage 3go command arguments 4the commands are 5 build compile packages and dependenc...