folly编译错误boost::re_detail_106100::cpp_regex_traits_implementation<char>::transform解决办法
2018-02-01 13:41
966 查看
make编译folly时报错如下:
make[4]: Entering directory '/home/montafan/git/folly/folly/folly/experimental/logging/example'
/bin/bash ../../../libtool --tag=CXX --mode=link g++ -std=gnu++1y -g -O2 -lboost_context -lboost_program_options -lboost_thread -lboost_filesystem -lboost_system -lboost_regex -lpthread -lboost_chrono -lssl -lcrypto -o logging_example main.o libfollylogging_example.la -lbz2 -llzma -lz -lsnappy -llz4 -liberty -ldl -levent -ldouble-conversion -lglog -lgflags
libtool: link: g++ -std=gnu++1y -g -O2 -o .libs/logging_example main.o ./.libs/libfollylogging_example.a /home/montafan/git/folly/folly/folly/experimental/logging/.libs/libfollylogging.so /home/montafan/git/folly/folly/folly/.libs/libfolly.so -lunwind -lboost_context -lboost_program_options -lboost_thread -lboost_filesystem -lboost_system -lboost_regex -lpthread -lboost_chrono -lssl -lcrypto -lbz2 -llzma -lz -lsnappy -llz4 -liberty -ldl -levent -ldouble-conversion -lglog -lgflags
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::perl_matcher<char const*, std::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::raise_runtime_error(std::runtime_error const&)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::get_mem_block()'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::get_default_error_string(boost::regex_constants::error_type)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::put_mem_block(void*)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::verify_options(unsigned int, boost::regex_constants::_match_flags)'
问题解决过程:
stackoverflow某个帖子说是多个版本的boost会导致该问题
但sudo ldconfig -v|grep boost发现版本是1.61,而且并没有重复安装其他版本的boost
再仔细看原来是Boost::Regex模块有问题,然后一搜果然发现问题,怎么有1.61和1.58两个版本
libboost_regex.so.1.58.0 -> libboost_regex.so.1.58.0
libboost_regex.so.1.61.0 -> libboost_regex.so.1.61.0
使用1.61.0,编译所有组建,成功
./bootstrap.sh --with-python=python3
sudo ./b2 --toolset=gcc --build-type=complete --layout=versioned --with-atomic --with-chrono --with-container --with-context --with-coroutine --with-coroutine2 --with-date_time --with-exception --with-filesystem --with-graph --with-graph_parallel --with-iostreams --with-locale --with-log --with-math --with-metaparse --with-mpi --with-program_options --with-python --with-random --with-regex --with-serialization --with-signals --with-system --with-test --with-thread --with-timer --with-type_erasure --with-wave stage
安装
sudo ./b2 install --prefix=/usr/local
成功
make[4]: Entering directory '/home/montafan/git/folly/folly/folly/experimental/logging/example'
/bin/bash ../../../libtool --tag=CXX --mode=link g++ -std=gnu++1y -g -O2 -lboost_context -lboost_program_options -lboost_thread -lboost_filesystem -lboost_system -lboost_regex -lpthread -lboost_chrono -lssl -lcrypto -o logging_example main.o libfollylogging_example.la -lbz2 -llzma -lz -lsnappy -llz4 -liberty -ldl -levent -ldouble-conversion -lglog -lgflags
libtool: link: g++ -std=gnu++1y -g -O2 -o .libs/logging_example main.o ./.libs/libfollylogging_example.a /home/montafan/git/folly/folly/folly/experimental/logging/.libs/libfollylogging.so /home/montafan/git/folly/folly/folly/.libs/libfolly.so -lunwind -lboost_context -lboost_program_options -lboost_thread -lboost_filesystem -lboost_system -lboost_regex -lpthread -lboost_chrono -lssl -lcrypto -lbz2 -llzma -lz -lsnappy -llz4 -liberty -ldl -levent -ldouble-conversion -lglog -lgflags
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::perl_matcher<char const*, std::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::raise_runtime_error(std::runtime_error const&)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::get_mem_block()'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::get_default_error_string(boost::regex_constants::error_type)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::put_mem_block(void*)'
/home/montafan/git/folly/folly/folly/.libs/libfolly.so: undefined reference to `boost::re_detail_106100::verify_options(unsigned int, boost::regex_constants::_match_flags)'
问题解决过程:
stackoverflow某个帖子说是多个版本的boost会导致该问题
但sudo ldconfig -v|grep boost发现版本是1.61,而且并没有重复安装其他版本的boost
再仔细看原来是Boost::Regex模块有问题,然后一搜果然发现问题,怎么有1.61和1.58两个版本
libboost_regex.so.1.58.0 -> libboost_regex.so.1.58.0
libboost_regex.so.1.61.0 -> libboost_regex.so.1.61.0
使用1.61.0,编译所有组建,成功
./bootstrap.sh --with-python=python3
sudo ./b2 --toolset=gcc --build-type=complete --layout=versioned --with-atomic --with-chrono --with-container --with-context --with-coroutine --with-coroutine2 --with-date_time --with-exception --with-filesystem --with-graph --with-graph_parallel --with-iostreams --with-locale --with-log --with-math --with-metaparse --with-mpi --with-program_options --with-python --with-random --with-regex --with-serialization --with-signals --with-system --with-test --with-thread --with-timer --with-type_erasure --with-wave stage
安装
sudo ./b2 install --prefix=/usr/local
成功
相关文章推荐
- error LNK2001: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > 的解决办法
- "std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const"问题的解决办法
- 编译Sonatype Nexus源代码出现“无法确定 <R>R 的类型参数”错误的解决
- maven项目出现web.xml is missing and <failOnMissingWebXml> is set to true错误的解决办法
- 使用muduo编译链接错误 undefined reference to `muduo::ThreadPool::run(boost::function<void ()()>&&)'
- Xcode编译WebApps找不到js的错误解决办法<转>
- “warning C4251::CStringT<BaseType,StringTraits>需要有 dll 接口”解决办法
- 出现<authentication mode="Windows"/>错误解决办法
- Debug编译运行都没有问题,Release编译错误error C2664: 'ATL::CStringT<BaseType,StringTraits>::CStringT(const VARIANT
- Qt5编译时出现<QtGui/QApplication> ---> No such file or directory错误解决办法
- android NDK开发编译时出现Type 'jint' could not be resolved和Unresolved inclusion: <jni.h>的解决办法
- linux 编译中required file `./ltmain.sh' not found 错误的解决办法
- Docker: oracle_xe_10g 数据库 运行sqlplus 时Message file sp1<lang>.msb not found 错误解决办法_20160513_七侠镇莫尛貝
- 出现<authentication mode="Windows"/>错误解决办法
- MyEclipse10.7的 at com.genuitec.eclipse.ast.deploy.core.Deployment.<init>错误解决办法。
- 【转】QT#include <GL/gl.h>错误解决办法
- android NDK开发编译时出现Type 'jint' could not be resolved和Unresolved inclusion: <jni.h>的解决办法
- MyEclipse10.7的 at com.genuitec.eclipse.ast.deploy.core.Deployment.<init>错误解决办法
- VC6.0编程用到#include <unistd.h>编译时出现的错误及解决方法
- 出现<authentication mode="Windows"/>错误解决办法