undefined reference to 问题产生的原因有很多:
1、本地cpp文件没有编译;
2、没有找到对应的so文件;
3、编译gcc和so编译版本不同时,可能会出现;
本次问题描述:在gcc4.8.5下,编译连接libocci.so 正常,当gcc升级到gcc6或者更大时,就会出现 部分函数undefined reference to的问题;
经过问题查找分析,发现是因为 C++ ABI一个错误,gcc4升gcc5时,std::string库接口做了迁移,编译时,找不到对应的使用了std::string 的函数;
解决方案:
1、CMakeLists.txt文件中添加:add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
强制使用旧的接口;
2、重新编译第三方库,统一gcc版本;