场景
Linux程序运行,提示出错undefined symbol: _ZTINSt6thread6_StateE,核心是没有找到相关的函数实现导致的问题
原因分析
1 没有找到相关的系统函数实现
undefined symbol: _ZTINSt6thread6_StateE
例如_ZTINSt6thread6_StateE,这个明显是调用的函数是一个系统函数,但是没有找到对应的动态库实现
原因是编译的程序使用的是gcc version 7.3.1 20180303 (Red Hat 7.3.1-5) (GCC) ,环境安装的是系统依赖的编译器gcc version 4.8.2 (GCC) ,GCC版本不一致,导致程序运行失败
解决
使用4.8版本的编译器重新编译程序
2没有找到相关的用户函数实现
undefined symbol: _Z7GetTimev
发现是编译代码的时候,没有添加包含GetTime函数的源码文件,由于是动态库加载,因此只有运行时候才发现缺少该函数实现,从而导致程序运行失败
解决
添加包含该函数的实现的源码文件