我的Go程序的一部分依赖于使用import "C"
的非常大的C代码库,需要花费几分钟来编译。有没有办法预编译C库或创建我的Go程序的一个分支,它将与C代码一起预编译,这样每次编译主程序时我都不必等待整个C库每次重新编译?
答案 0 :(得分:2)
您可以将其与编译的目标文件和头文件链接,而不是导入整个C源代码。请参阅https://golang.org/cmd/cgo/,其中介绍了如何使用cgo的LDFLAGS
参数。
在线还有其他文档介绍了如何将C代码编译成目标文件(.a
和.o
文件),例如this one。您还应该参考您正在使用的库中的文档或其Makefile,因为它可能已经有指令将其编译为可以链接的目标文件。
如果具有import "C"
的库及其来源未被修改,您还可以go get
它,(或者可能go install
)将存储其已编译的库$GOPATH/pkg
中的目标文件,编译其他更快导入它的Go程序。