早上好!
我在C ++ 11中遇到正则表达式问题。 我有Ubuntu Light 14.04和这个版本的编译器:
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
我今天使用这三个命令安装了boost。
sudo apt-get install libboost-all-dev
sudo apt-get install aptitude
aptitude search boost
当我编译这个简单的程序时:
#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace boost;
using namespace std;
int main()
{
string text;
regex pattern( "\\w* to \\w*" );
return 0;
}
使用此命令:
g++ main.cpp
编译器返回:
/tmp/ccOdFz7f.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]+0x22): undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
collect2: error: ld returned 1 exit status
我读了这个主题:linker error in boost regex 并使用此命令:
g++ -I /usr/lib/boost/include -L /usr/lib/boost/lib main.cpp -lboost_regex-mt
但编译器返回:
/usr/bin/ld: cannot find -lboost_regex-mt
collect2: error: ld returned 1 exit status
我也没有/ usr / lib / boost目录!!!
我应该在这个程序中更改什么,或者在Ubuntu中使用boost中的正则表达式?
答案 0 :(得分:1)
链接器无法找到指定的文件。
使用-lboost_regex
链接库。
要找到已安装的正则表达式库,请调用locate libboost_regex
,如下所示:
$ locate libboost_regex
/usr/lib/x86_64-linux-gnu/libboost_regex.a
/usr/lib/x86_64-linux-gnu/libboost_regex.so
/usr/lib/x86_64-linux-gnu/libboost_regex.so.1.54.0
在我的情况下,它安装在/usr/lib/x86_64-linux-gnu
目录