Boost.Regex联动装置错误LUbuntu 14.04 g++4.8.2

Boost.Regex linkage error LUbuntu 14.04 g++ 4.8.2

本文关键字:g++4 LUbuntu 错误 Regex 装置 Boost      更新时间:2023-10-16

早上好!

我对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

我阅读了以下主题:boost正则表达式中的链接器错误并使用了以下命令:

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中的正则表达式?

链接器找不到指定的文件。使用-lboost_regex链接库。

要查找已安装的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目录