2017-01-02 46 views
1

我的Go程序的一部分依賴於使用import "C"的非常大的C代碼庫,需要幾分鐘的時間才能編譯。有沒有什麼辦法可以預編譯C庫或創建我的Go程序的一個分支,這些分支將與C代碼一起預編譯,這樣每次編譯主程序時我都不必等待整個C庫每次重新編譯?依靠C提高速度的Go程序的預編譯部分

回答

2

除了導入整個C源代碼,您可以將它與編譯目標文件和頭文件鏈接起來。請參閱https://golang.org/cmd/cgo/,其中涵蓋了如何使用cgo的LDFLAGS參數。

還有其他在線文檔介紹瞭如何將C代碼編譯到目標文件(.a.o文件),如this one。你還應該參考你正在使用的庫或其Makefile中的文檔,因爲它可能已經有指令將它編譯成可鏈接的對象文件。

如果具有import "C",其源不被修改圖書館,你也可以go get它,(或者go install它),將其編譯的對象文件存儲在$GOPATH/pkg,使得其他圍棋程序的彙編,導入速度更快。