外部库中的tr1 undefined reference std :: tr1 :: basic_regex

时间:2016-05-16 19:05:13

标签: c++ regex c++11 tr1

我正在尝试编译一个使用外部库的应用程序,我没有源代码,只有标题。

我遇到的错误如下:

./libExternal.so: undefined reference to `bool std::tr1::regex_match<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<std::tr1::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, char, std::tr1::regex_traits<char> >(__gnu_cxx::__normal_iterator<char const*, std::string>, __gnu_cxx::__normal_iterator<char const*, std::string>, std::tr1::match_results<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<std::tr1::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > > >&, std::tr1::basic_regex<char, std::tr1::regex_traits<char> > const&, std::bitset<11ul>)'
./libExternal.so: undefined reference to `std::tr1::basic_regex<char, std::tr1::regex_traits<char> >::_M_compile()'

我认为是我的gcc版本的东西,但是我尝试使用旧版本而不解决问题。 目前我正在使用:

gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC) 

我尝试使用-std标志更改std而不解决问题。我也尝试导入实现tr1的boost库但是没办法......

我正在使用flowwing makefile:

PROGRAM = tmv

INCLUDEDIRS = -I . \
-I /usr/include/boost  \
-I /usr/include/boost/tr1/tr1  \
-I /usr/include/boost/tr1 \

LIBDIRS = -L .
LIBS =   -lboost_system  -lboost_regex  -pthread  -lExternal
LDFLAGS = $(LIBDIRS) $(LIBS)

CXXSOURCES = *.cpp
CXXFLAGS = -g -Wall -v $(INCLUDEDIRS) 
CXX = g++

all: $(PROGRAM)
$(PROGRAM): $(CXXSOURCES)
    $(CXX) $(CXXSOURCES)  -o $(PROGRAM) $(CXXFLAGS) $(LDFLAGS)
clean:
   $(RM) -f $(PROGRAM) *.o

如果有人有想法会很好。 非常感谢你。

0 个答案:

没有答案