我的 Go 程序的一部分依赖于使用 import "C"
的非常大的 C 代码库,需要几分钟的时间来编译。有没有办法预编译 C 库本身,或者创建 Go 程序的一个分支,该分支将与 C 代码一起预编译,以便每次编译主程序时,我不必等待整个 C 库每次都重新编译?
最佳答案
您可以将其与已编译的目标文件和头文件链接,而不是导入整个 C 源代码。引用https://golang.org/cmd/cgo/其中介绍了如何使用 cgo 的 LDFLAGS
参数。
网上还有其他文档介绍了如何将 C 代码编译为目标文件(.a
和 .o
文件),例如 this one 。您还应该引用您正在使用的库或其 Makefile 中的文档,因为它可能已经包含将其编译为可链接的目标文件的说明。
如果库具有导入“C”
,并且其源代码未被修改,您也可以go get
它,(或者也许go install
it),这会将其编译的目标文件存储在您的 $GOPATH/pkg
中,从而使导入它的其他 Go 程序的编译速度更快。
关于c - 预编译 Go 程序中依赖 C 来提高速度的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41422187/