В системе установлен boost 1.62 собранный, как это не удивительно gcc. Так же стоит clang 3.9.1 И есть простая программка:
#include <boost/regex.hpp>
int checkStringForSystem( const char * inString ) {
if ( inString == NULL ) {
return 0;
}
if ( boost::regex_match( inString, boost::regex( "[a-zA-Z0-9,./ ]*" ) ) ) {
return 0;
}
return -1;
}
int main(){
return checkStringForSystem( "test string" );
}
$ clang++ -O2 -g -DNDEBUG -fPIC -Wall -Wextra -Werror -Wno-unused-function -Wno-unused-parameter -Wno-write-strings -std=gnu++14 -l boost_regex-mt test2.cpp
/tmp/test2-d0f691.o: In function `boost::cpp_regex_traits<char>::transform[abi:cxx11](char const*, char const*) const':
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:962: undefined reference to `boost::re_detail_106200::cpp_regex_traits_implementation<char>::transform[abi:cxx11](char const*, char const*) const'
/tmp/test2-d0f691.o: In function `boost::cpp_regex_traits<char>::transform_primary[abi:cxx11](char const*, char const*) const':
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:966: undefined reference to `boost::re_detail_106200::cpp_regex_traits_implementation<char>::transform_primary[abi:cxx11](char const*, char const*) const'
clang-3.9: error: linker command failed with exit code 1 (use -v to see invocation)
Да, g++ с теми же параметрами -O2 отрабатывает нормально.
Вопрос, кто-нибудь с таким сталкивался и как бы это обойти?
PS Предваряя вопрос, от шланга отказаться не могу, т.к. надо собрать одно софтень которая заточена на него и gcc не собирается.