最近需要利用go的环境调用c语言编译生产的libdlml.so。
一.示例代码结构如下图:
其中dlml.h 和libdlml.so是go需要调用的头文件和lib。
main.go源码如下:
二.过程:
1. sudo go build main.go.此时未报错。在当前目录下生成main可执行文件
2.运行main。
./main
3.此时报错:symbol lookup error: ./main undefined symbol: nvmlInit
三.解决过程
1.先检查main.go内的配置情况。
#cgo CFLAGS:-I../include //表示当前要引用的头文件路径
#cgo LDFLAGS:-L../lib -ldlml //指定要调用的库为libdlml.so. 注意该配置是去掉了libdlml.so的开头三个字母"