c - 预编译 Go 程序中依赖 C 来提高速度的部分

标签 c go cgo

我的 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/

相关文章:

c - 从二进制数据中获取双字

c - 为什么 GCC 在使用三字母时发出警告,而在使用二字母时却不发出警告?

Golang,解析xml来构造?

mysql - 处理超过 20 条记录时出现问题

go - Go 中的条件编译

c - 如何在我的实现 QuickSort 中防止堆栈溢出?

c - 理解/澄清c代码的逻辑

go - 如何在Golang中为空 slice 的第一个索引分配值?

c++ - cgo : iostream:38:28: fatal error: bits/c++config. h 编译错误:没有那个文件或目录

go - 在cgo中定义变量