链接以增强gcc中的正则表达式

7 c++ regex linker boost boost-regex

我正在尝试编译我在linux上使用正则表达式的程序.我通过输入make -fgcc.mak在libs/regex/build中构建了boost库,它创建了一个目录gcc,其中包含以下四个文件

boost_regex-gcc-1_35
boost_regex-gcc-d-1_35
libboost_regex-gcc-1_35.a
libboost_regex-gcc-d-1_35.a
Run Code Online (Sandbox Code Playgroud)

现在我想使用我的程序中的正则表达式,它位于某个任意目录中.我#include boost/regex.hpp

我收到的错误表明找不到regex.hpp.然后我在g ++编译器中给出了-I选项.我没有得到那个错误.但是我收到以下错误

undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::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)'
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索,发现我需要以某种方式将上述4个库中的一个链接到我的程序.我该怎么做.我应该链接哪一个?为什么?

gre*_*ade 10

可以libboost_regex-gcc-1_35.a在链接步骤中添加-static -lboost_regex-gcc-1_35到目标文件列表中,也可以添加到目标文件中.还要确保-I在编译步骤中有一个指向boost包含目录的开关.如果库不在典型的搜索路径之内(/usr/lib在*nix上),请将该目录添加到链接命令中-Wl,-L/path/to/boost/libs,g++或者只是-L/path/to/boost/libs打开ld.