2014-10-10 61 views
1

早上好!Boost.Regex鏈接錯誤LUbuntu 14.04 g ++ 4.8.2

我在C++ 11中有正則表達式的問題。 我的Ubuntu 14.04輕和這個版本的編譯器:

g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2 
Copyright (C) 2013 Free Software Foundation, Inc. 

我使用這三個命令安裝升壓今天。

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目錄/升壓目錄!

我應該在這個程序中更改什麼或在Ubuntu中使用正則表達式進行升級?

回答

1

鏈接器找不到指定的文件。使用-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目錄