1.首先使用命令readelf -a xxx.so查看是否有导出接口,结果是有的.
2.按照我的经验,排查是否为c和c++混编导致,因为我们的程序和so都是c++,不存在这个问题,所以排除。
然后我以为是so的cmake写的有问题,又是一通乱改,折腾了一下午,还是不行。
3.最终,我查看其他库的调用位置,找到了问题所在.原因是不止一个cmake文件需要使用此库,我们的项目构成比较复杂,cmake目录结构相当乱,cmake报错提示的是当前cmake目录里的某个cpp使用的so库func undefine,虽然当前cmake文件已经指定了链接库,但是上层目录的cmake文件没有指定链接库,所以报错.于是我全局搜素了一遍,在所有未引用该库的cmake文件中都进行了引用,最终问题解决.
cmake链接so,出现undefined reference to 错误
于 2022-01-29 20:54:06 首次发布