1
我的Go程序的一部分依賴於使用import "C"
的非常大的C代碼庫,需要幾分鐘的時間才能編譯。有沒有什麼辦法可以預編譯C庫或創建我的Go程序的一個分支,這些分支將與C代碼一起預編譯,這樣每次編譯主程序時我都不必等待整個C庫每次重新編譯?依靠C提高速度的Go程序的預編譯部分
我的Go程序的一部分依賴於使用import "C"
的非常大的C代碼庫,需要幾分鐘的時間才能編譯。有沒有什麼辦法可以預編譯C庫或創建我的Go程序的一個分支,這些分支將與C代碼一起預編譯,這樣每次編譯主程序時我都不必等待整個C庫每次重新編譯?依靠C提高速度的Go程序的預編譯部分
除了導入整個C源代碼,您可以將它與編譯目標文件和頭文件鏈接起來。請參閱https://golang.org/cmd/cgo/,其中涵蓋了如何使用cgo的LDFLAGS
參數。
還有其他在線文檔介紹瞭如何將C代碼編譯到目標文件(.a
和.o
文件),如this one。你還應該參考你正在使用的庫或其Makefile中的文檔,因爲它可能已經有指令將它編譯成可鏈接的對象文件。
如果具有import "C"
,其源不被修改圖書館,你也可以go get
它,(或者go install
它),將其編譯的對象文件存儲在$GOPATH/pkg
,使得其他圍棋程序的彙編,導入速度更快。