Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost-tread代码在VC++;但不是在GCC下:如何获得更好的调试信息_C++_Multithreading_Gcc_Visual C++_Boost - Fatal编程技术网

C++ Boost-tread代码在VC++;但不是在GCC下:如何获得更好的调试信息

C++ Boost-tread代码在VC++;但不是在GCC下:如何获得更好的调试信息,c++,multithreading,gcc,visual-c++,boost,C++,Multithreading,Gcc,Visual C++,Boost,我有一个多线程(boost::thread 1.67.0)测试应用程序,它在VC++(MSVS2017 v15.7)下编译良好,但在GCC下编译失败。抛出的错误对我来说真的很难理解。 我认为这与我创建线程的方式有关。 有没有办法获得更好的调试信息 密码 给出: /tmp/cc9cP6LZ.o: In function `std::thread::thread<void (&)(int, __gnu_cxx::__normal_iterator<char const*, std

我有一个多线程(boost::thread 1.67.0)测试应用程序,它在VC++(MSVS2017 v15.7)下编译良好,但在GCC下编译失败。抛出的错误对我来说真的很难理解。 我认为这与我创建线程的方式有关。 有没有办法获得更好的调试信息

密码 给出:

/tmp/cc9cP6LZ.o: In function `std::thread::thread<void (&)(int, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, std::promise<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::shared_future<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&), int, std::reference_wrapper<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const>, std::reference_wrapper<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const>, std::reference_wrapper<boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > >, std::reference_wrapper<std::promise<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::reference_wrapper<std::shared_future<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >(void (&)(int, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, std::promise<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::shared_future<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&), int&&, std::reference_wrapper<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const>&&, std::reference_wrapper<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const>&&, std::reference_wrapper<boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > >&&, std::reference_wrapper<std::promise<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&&, std::reference_wrapper<std::shared_future<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&&)':
main.cpp:(.text._ZNSt6threadC2IRFviRKN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESD_RKN5boost11basic_regexIcNSE_12regex_traitsIcNSE_16cpp_regex_traitsIcEEEEEERSt7promiseISt4pairImSA_EERKSt13shared_futureISP_EEJiSt17reference_wrapperISC_ESZ_SY_ISK_ESY_ISQ_ESY_IST_EEEEOT_DpOT0_[_ZNSt6threadC5IRFviRKN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESD_RKN5boost11basic_regexIcNSE_12regex_traitsIcNSE_16cpp_regex_traitsIcEEEEEERSt7promiseISt4pairImSA_EERKSt13shared_futureISP_EEJiSt17reference_wrapperISC_ESZ_SY_ISK_ESY_ISQ_ESY_IST_EEEEOT_DpOT0_]+0x156): undefined reference to `pthread_create'
/tmp/cc9cP6LZ.o: In function `bool boost::regex_search<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':
main.cpp:(.text._ZN5boost12regex_searchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsESJ_[_ZN5boost12regex_searchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsESJ_]+0xba): undefined reference to `boost::re_detail_106700::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()'
/tmp/cc9cP6LZ.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
main.cpp:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j[_ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j]+0x2a): undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
/tmp/cc9cP6LZ.o: In function `boost::re_detail_106700::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':
main.cpp:(.text._ZN5boost16re_detail_10670012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEC2ESC_SC_RNS_13match_resultsISC_SF_EERKNS_11basic_regexIcSJ_EENS_15regex_constants12_match_flagsESC_[_ZN5boost16re_detail_10670012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEC5ESC_SC_RNS_13match_resultsISC_SF_EERKNS_11basic_regexIcSJ_EENS_15regex_constants12_match_flagsESC_]+0x124): undefined reference to `boost::re_detail_106700::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
collect2: error: ld returned 1 exit status
/tmp/cc9cP6LZ.o:函数'std::thread::thread(void(&)(int,uu gnu cxx::uuu normal_iterator const&,uuu gnu cxx:::u normal_iterator const&,boost::basic_regex const&,std::promise&,std::shared u future const&),int&,int&,std&,std::reference&,std::reference&,std&,std&,reference&,std&,reference':
main.cpp:(.text.)_[\uznst6threadc5irfvirkn9\uuuuxx17\uuuuuuuuxx111基本严格性条款11char\uxx111基础监管条款12regex\u16cpp\uregex\u16traitseeers承诺人4未来共享参考监管条款]:未定义对“pthread_create”的引用
/tmp/cc9cP6LZ.o:在函数'bool boost::regex_search('uuuu gnu cxx::'uuuu normal_迭代器,'uuuu gnu cxx:::'uuu normal_迭代器,boost::match_results&,boost::basic_regex const&,boost::regex_常量::'u match_标志,'uuu gnu cxx:'uu normal_u迭代器)'
main.cpp:(.text.)_[[ZN5Boost12 regex_search in 9_ugnu cxx17_uunormal_u迭代器PKCNST7_uucxx1112基本严格性特征特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配结果匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征匹配特征:对“boost::re_detail_106700::perl_matcher::find()”的未定义引用
/tmp/cc9cP6LZ.o:在函数“boost::basic_regex::assign(char const*,char const*,unsigned int)”中:
main.cpp:(.text."zn5boost11基本规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则
/tmp/cc9cP6LZ.o:在函数'boost::re_detail_106700::perl_matcher::perl_matcher(uu gnu cxx::u normal_迭代器,u gnu cxx:::u normal_迭代器,boost::match_结果&,boost::basic_regex常量&,boost::regex常量::u match_标志,u gnu cxx:u normal迭代器):
main.cpp:(.text.)_[[ZN5boost16re\u10670012Perl\uU gnu\uCXX17\uU normal\uU迭代器PKCNST7\uU CXX1112基本严格性条款11Char\u traitssiceeeseans\u sub\u match ISC\u EENS\u 12 regex\u traitsicsins\u 16cpp\u regex\u traitsiceeec5esc\u SC\u13 match\u13结果ISC\u11基本regexu12\u12:对“boost::re_detail_106700::perl_matcher::construct_init(boost::basic_regex const&,boost::regex_constants::_match_flags)”的未定义引用
collect2:错误:ld返回了1个退出状态

Dumb me没有链接到boost库,也没有包含pthread。实际上,我甚至没有为GCC编译boost

正确的构建命令是

g++ main.cpp -Wall -Wextra -I../Boost/boost_1_67_0 -L../Boost/boost_1_67_0/stage/lib -lboost_regex -lpthread -std=c++14

并非所有的Boost库都是只包含标题的,有些库有一个实际的库,您需要链接。@Someprogrammerdude嗯,好的,这确实是我的第一个gcc Boost编译。不一定您的发行版有它(看起来您可能正在linux上构建)通过
c++filt
传递输出以对名称进行demangle运算,将使其更具可读性。@JHBonarius您需要将适当的-l选项传递给g++
/tmp/cc9cP6LZ.o: In function `std::thread::thread<void (&)(int, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, std::promise<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::shared_future<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&), int, std::reference_wrapper<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const>, std::reference_wrapper<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const>, std::reference_wrapper<boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > >, std::reference_wrapper<std::promise<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::reference_wrapper<std::shared_future<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >(void (&)(int, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, std::promise<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::shared_future<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&), int&&, std::reference_wrapper<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const>&&, std::reference_wrapper<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const>&&, std::reference_wrapper<boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > >&&, std::reference_wrapper<std::promise<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&&, std::reference_wrapper<std::shared_future<std::pair<unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&&)':
main.cpp:(.text._ZNSt6threadC2IRFviRKN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESD_RKN5boost11basic_regexIcNSE_12regex_traitsIcNSE_16cpp_regex_traitsIcEEEEEERSt7promiseISt4pairImSA_EERKSt13shared_futureISP_EEJiSt17reference_wrapperISC_ESZ_SY_ISK_ESY_ISQ_ESY_IST_EEEEOT_DpOT0_[_ZNSt6threadC5IRFviRKN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESD_RKN5boost11basic_regexIcNSE_12regex_traitsIcNSE_16cpp_regex_traitsIcEEEEEERSt7promiseISt4pairImSA_EERKSt13shared_futureISP_EEJiSt17reference_wrapperISC_ESZ_SY_ISK_ESY_ISQ_ESY_IST_EEEEOT_DpOT0_]+0x156): undefined reference to `pthread_create'
/tmp/cc9cP6LZ.o: In function `bool boost::regex_search<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':
main.cpp:(.text._ZN5boost12regex_searchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsESJ_[_ZN5boost12regex_searchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsESJ_]+0xba): undefined reference to `boost::re_detail_106700::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()'
/tmp/cc9cP6LZ.o: In function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)':
main.cpp:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j[_ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j]+0x2a): undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
/tmp/cc9cP6LZ.o: In function `boost::re_detail_106700::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':
main.cpp:(.text._ZN5boost16re_detail_10670012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEC2ESC_SC_RNS_13match_resultsISC_SF_EERKNS_11basic_regexIcSJ_EENS_15regex_constants12_match_flagsESC_[_ZN5boost16re_detail_10670012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEC5ESC_SC_RNS_13match_resultsISC_SF_EERKNS_11basic_regexIcSJ_EENS_15regex_constants12_match_flagsESC_]+0x124): undefined reference to `boost::re_detail_106700::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
collect2: error: ld returned 1 exit status
g++ main.cpp -Wall -Wextra -I../Boost/boost_1_67_0 -L../Boost/boost_1_67_0/stage/lib -lboost_regex -lpthread -std=c++14