我正在尝试编译一个使用外部库的应用程序,我没有源代码,只有标题。
我遇到的错误如下:
./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
如果有人有想法会很好。 非常感谢你。