1. 程式人生 > >gcc5.4報錯對‘std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()’未定義的引用

gcc5.4報錯對‘std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()’未定義的引用

name ++ doc 網上 makefile c_str 方法 list 特性

我在編譯ligra是遇到了這個問題,網上搜了一遍,發現是了原因https://gcc.gnu.org/onlinedocs/libstdc%2B%2B/manual/using_dual_abi.html

gcc5.4中C++11對一些變量的解析不太一樣(表達不太好),比如,f std::list<int>被定義為了std::__cxx11::list<int>,所以會出現未定義引用的錯誤,。

解決辦法禁用C++11的相關特性,方法如下:https://blog.csdn.net/ufolr/article/details/52669333

我使用的是在編譯選項中預定義宏。

方法很簡單,直接在Makefile選項中添加-D_GLIBCXX_USE_CXX11_ABI=0

gcc -std=c14 -D_GLIBCXX_USE_CXX11_ABI=0 ........

gcc5.4報錯對‘std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()’未定義的引用