gcc链接库碰到错误:std::__cxx11::basic_string, std::allocator > const&)’未定义的引用
新装了一台ubuntu服务器,将原先centos下的编译环境配置了一份,编译时出现如下错误:
std::__cxx11::basic_string, std::allocator > const&)’未定义的引用
发现是由于CentOS的gcc版本和ubuntu的gcc版本不一致造成,安装的ubuntu带的gcc5.x版,stl的名称有变化造成
原因
gcc5以及以后的版本,将std::string和std::list重写,std::list变为std::__cxx11::list
解决方法
使用_GLIBCXX_USE_CXX11_ABI编译宏
-D_GLIBCXX_USE_CXX11_ABI=0 // 链接到旧版本,未启用c++11特性,std::string是std::basic_string
-D_GLIBCXX_USE_CXX11_ABI=1 // 链接到新版本
Popularity: 7% [?]