ch13-4: cgo 例子增加Windows环境运行的补充说明

This commit is contained in:
chai2010 2016-01-06 10:34:41 +08:00
parent 178cf14581
commit d031a92304

View File

@ -104,7 +104,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庫是安裝在不同的位置你需要更新這些參數。 在cgo註釋中還可以包含#cgo指令用於給C語言工具鏈指定特殊的參數。例如CFLAGS和LDFLAGS分别對應傳給C語言編譯器的編譯參數和鏈接器參數使它們可以特定目録找到bzlib.h頭文件和libbz2.a庫文件。這個例子假設你已經在/usr目録成功安裝了bzip2庫。如果bzip2庫是安裝在不同的位置你需要更新這些參數譯註這里有一個從純C代碼生成的cgo綁定不依賴bzip2靜態庫和操作繫統的具體環境具體請訪問 https://github.com/chai2010/bzip2
NewWriter函數通過調用C語言的BZ2_bzCompressInit函數來初始化stream中的緩存。在writer結構中還包括了另一個buffer用於輸出緩存。 NewWriter函數通過調用C語言的BZ2_bzCompressInit函數來初始化stream中的緩存。在writer結構中還包括了另一個buffer用於輸出緩存。