【发布时间】:2016-01-13 08:22:13
【问题描述】:
我正在尝试在 ubuntu 12.04 (gcc 4.8.2) 上使用 boost_regex。
我已经像这样安装了 boost。
$ sudo apt-get install libboost-all-dev
我已经确认安装了 boost_regex 库。
$ ls /usr/lib/x86_64-linux-gnu | grep regex
libboost_regex.a
libboost_regex.so
libboost_regex.so.1.54.0
然后,我尝试构建一个正则表达式程序代码。但是我遇到了链接错误。那我应该添加什么链接库?
#include <boost/regex.hpp>
#include <iostream>
#include <string>
int main()
{
std::string line;
boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );
while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
}
$ g++ -Wall -std=c++11 -o out test2.cc -lboost_regex
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `icu_52::Locale::~Locale()'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `u_charType_52'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `icu_52::Locale::Locale(icu_52::Locale const&)'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `u_digit_52'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `icu_52::Collator::createInstance(icu_52::Locale const&, UErrorCode&)'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `icu_52::Locale::Locale()'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `u_charFromName_52'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `u_tolower_52'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `u_isspace_52'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_regex.so: undefined reference to `u_isblank_52'
collect2: error: ld returned 1 exit status
【问题讨论】:
标签: c++ regex boost boost-regex