Dlib编译错误Converting std::__cxx11::string to std::string

在编译Dlib的时候总是无法通过。引发错误的原因居然是Anaconda。

Dlib编译错误Converting std::__cxx11::string to std::string

在编译Dlib的时候总是无法通过,报错信息包含Converting std::__cxx11::string to std::string

🤔

一开始以为是Dlib的问题,但是在github查询发现dlib的作者davis认为这个是编译器错误[1]。以错误信息作为关键词继续检索在stackoverflow发现这样一则解释[2],原来是gcc5.4要求编译与链接的库文件采用统一的ABI版本[3]。所以,技术ldd命令一看,libstdc++.so.6路径里居然有Anaconda

反正也不常用,干脆卸载了它。然后就一切正常了。

理论上将Anaconda从系统PATH变量中去掉也可以,如果你遇到类似的问题不妨试试看。

REF


  1. https://github.com/davisking/dlib/issues/440 ↩︎

  2. http://stackoverflow.com/questions/33394934/converting-std-cxx11string-to-stdstring ↩︎

  3. gcc关于ABI的说明 ↩︎