今天工作上碰到个go和c利用cgo混合编程的问题,向各位高手请教下。
go程序中使用cgo调用现有产品的一个c语言实现的模块A的lib库文件。该模块A中调用了库函数pow,且在模块A的.c文件中已经include了<math.h>,并且模块A的lib库文件是可以编译生成的。
结果编译go程序提示undefined reference to pow。网上搜索了下,方法都是针对gcc编译c程序的,要在编译时加参数-lm。
那么,像我这种情况,在go里通过cgo调用c代码的话,应该怎么做呢?
谢谢指教。
今天刚好也碰到了这个问题:
解决方法其实在go文件中(配置C的地方),加入参数就行:
添加#cgo LDFLAGS: -lm
同时我还碰到了“undefined reference to `dladdr”错误,?
解决方案是:
添加:#cgo LDFLAGS:-ldl