如何使用Cgo 在Go 中靜態連結C 庫
Go 社群中有很多關於如何靜態連結C 的討論使用Cgo 的Go庫。不過,需要注意的是,此過程與 Cgo 文件中使用的語法不同。
要靜態連結C 函式庫,請依照下列步驟操作:
第1 步:修改Cgo 指令
在您的Go 程式碼中,包含以下Cgo指令:
// #cgo CFLAGS: -I/path/to/c/include // #cgo LDFLAGS: /path/to/c/build/libgb.a
將「/path/to/c/include」替換為C 頭檔的路徑,並將「/path/to/c/build/libgb.a」替換為您的路徑靜態連結的C 庫。
第2 步:編譯並連結
編譯並連結您的使用以下指令進行程式設計:
CGO_ENABLED=0 go build -a -installsuffix cgo -ldflags '-s'
確保「ldflags」參數中包含“-s”,因為這會從連結的二進位檔案中刪除符號。
如果遇到錯誤就像「未定義」一樣,請確保符號存在於您的 C 庫中。
注意:如果您使用 Go 1.0,不支援靜態連結。更新至 Go 1.1 或更高版本才能使此功能正常運作。
以上是如何使用 cgo 靜態連結 Go 中的 C 函式庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!