This commit is contained in:
chai2010 2016-01-06 11:36:17 +08:00
parent d031a92304
commit f4931f0e44

View File

@ -102,7 +102,7 @@ func NewWriter(out io.Writer) io.WriteCloser {
} }
``` ```
在預處理過程中cgo工具爲生成一個臨時包用於包含所有在Go語言中訪問的C語言的函數或類型。例如C.bz_stream和C.BZ2_bzCompressInit。cgo工具通過以某種特殊的方式調用本地的C編譯器來發現在Go源文件導入聲明前的註釋中包含的C頭文件中的內容譯註`import "C"語句前僅捱着的註釋是對應cgo的特殊語法對應必要的構建參數選項和C語言代碼`)。 在預處理過程中cgo工具爲生成一個臨時包用於包含所有在Go語言中訪問的C語言的函數或類型。例如C.bz_stream和C.BZ2_bzCompressInit。cgo工具通過以某種特殊的方式調用本地的C編譯器來發現在Go源文件導入聲明前的註釋中包含的C頭文件中的內容譯註`import "C"`語句前僅捱着的註釋是對應cgo的特殊語法對應必要的構建參數選項和C語言代碼
在cgo註釋中還可以包含#cgo指令用於給C語言工具鏈指定特殊的參數。例如CFLAGS和LDFLAGS分别對應傳給C語言編譯器的編譯參數和鏈接器參數使它們可以特定目録找到bzlib.h頭文件和libbz2.a庫文件。這個例子假設你已經在/usr目録成功安裝了bzip2庫。如果bzip2庫是安裝在不同的位置你需要更新這些參數譯註這里有一個從純C代碼生成的cgo綁定不依賴bzip2靜態庫和操作繫統的具體環境具體請訪問 https://github.com/chai2010/bzip2 )。 在cgo註釋中還可以包含#cgo指令用於給C語言工具鏈指定特殊的參數。例如CFLAGS和LDFLAGS分别對應傳給C語言編譯器的編譯參數和鏈接器參數使它們可以特定目録找到bzlib.h頭文件和libbz2.a庫文件。這個例子假設你已經在/usr目録成功安裝了bzip2庫。如果bzip2庫是安裝在不同的位置你需要更新這些參數譯註這里有一個從純C代碼生成的cgo綁定不依賴bzip2靜態庫和操作繫統的具體環境具體請訪問 https://github.com/chai2010/bzip2 )。