第一次使用Cgo的历程记录(链接参数问题)
时间:2022-12-09 12:30:00
一、简述情况
(1)cgo引入第三方库及相关头文件后报错:
go list failed to return CompiledGoFiles. This may indicate failure to perform cgo processing; try building at the command line. See https://golang.org/issue/38990.
could not import C (cgo preprocessing failed) (compile)
(2)目录结构仅用于测试
二、解决过程
(1)根据错误信息找到帮助网页信息(https://golang.org/issue/38990)
通过提供的指令查找go list当我操作指令时,我看到了更详细的错误信息。
鉴于本人对C/C 及相关功能组件的了解程度较为浅薄,所以只能继续根据报错信息查找问题,cJSON报错信息是什么?
发现这种错误发生在库的链接阶段(可能与Cgo预处理相关,引入仓库后需要链接静态仓库进行一些准备。
然后查找相关用途cJSON报错信息时,找到这样一篇文章:使用cJson 报错:cJSON.c:(.text 0x4aa): undefined reference to `pow’
提到:
使用了#include
忘记链接动态库 加一个-lm 即可
因为有静态库的源代码,也有同样的引用,所以在cgo链接参数#cgo中加入了 -lm。问题解决成功,可正常使用。