You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@parquet.apache.org by Young Park <yp...@microsoft.com.INVALID> on 2017/06/08 22:59:09 UTC

Parquet-cpp build on GCC4.8?

Hi,

I have been building Parquet-cpp using GCC 5.4 without any issues, but due to another library dependency, I will have to use GCC 4.8 to compile Parquet-CPP for compatibility reasons.

I saw that the README states that GCC 4.8 or higher is supported, but as I keep encountering errors that I have not encountered when using GCC5.4, I was wondering if there are any specific configurations in CMakeLists that I would need to change to get it to work.

I have also attached the error log for your reference

Scanning dependencies of target reader-writer
[ 90%] Building CXX object examples/CMakeFiles/reader-writer.dir/reader-writer.cc.o
[ 92%] Linking CXX executable ../build/debug/reader-writer
../build/debug/libparquet.a(metadata.cc.o): In function `bool boost::regex_match<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cx
x::__normal_iterator<char const*, std::string> > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::string>, __g
nu_cxx::__normal_iterator<char const*, std::string>, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__no
rmal_iterator<char const*, std::string> > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags
)':
/usr/include/boost/regex/v4/regex_match.hpp:50: undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boo
st::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match()'
../build/debug/libparquet.a(metadata.cc.o): In function `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<_
_gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(__gnu_cxx::__normal_iterator<char const*, st
d::string>, __gnu_cxx::__normal_iterator<char const*, std::string>, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<
__gnu_cxx::__normal_iterator<char const*, std::string> > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constant
s::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::string>)':
/usr/include/boost/regex/v4/perl_matcher.hpp:365: undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<b
oost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, 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)'
collect2: error: ld returned 1 exit status
examples/CMakeFiles/reader-writer.dir/build.make:103: recipe for target 'build/debug/reader-writer' failed
make[2]: *** [build/debug/reader-writer] Error 1
CMakeFiles/Makefile2:628: recipe for target 'examples/CMakeFiles/reader-writer.dir/all' failed
make[1]: *** [examples/CMakeFiles/reader-writer.dir/all] Error 2
Makefile:138: recipe for target 'all' failed

Thanks in advance for your help!
Young

Re: Parquet-cpp build on GCC4.8?

Posted by Wes McKinney <we...@gmail.com>.
hi Young,

It looks like your Boost was compiled with a different version of gcc. If
you're targeting gcc 4.8 you need to compile all the dependencies with the
same compiler, otherwise you will have a conflict with the libstdc++ ABI.
Redhat provides the devtoolset which helps with deploying on a variety of
different Linux targets.

Let me know if this works!

Thanks
Wes


On Thu, Jun 8, 2017 at 6:59 PM, Young Park <yp...@microsoft.com.invalid>
wrote:

> Hi,
>
> I have been building Parquet-cpp using GCC 5.4 without any issues, but due
> to another library dependency, I will have to use GCC 4.8 to compile
> Parquet-CPP for compatibility reasons.
>
> I saw that the README states that GCC 4.8 or higher is supported, but as I
> keep encountering errors that I have not encountered when using GCC5.4, I
> was wondering if there are any specific configurations in CMakeLists that I
> would need to change to get it to work.
>
> I have also attached the error log for your reference
>
> Scanning dependencies of target reader-writer
> [ 90%] Building CXX object examples/CMakeFiles/reader-
> writer.dir/reader-writer.cc.o
> [ 92%] Linking CXX executable ../build/debug/reader-writer
> ../build/debug/libparquet.a(metadata.cc.o): In function `bool
> boost::regex_match<__gnu_cxx::__normal_iterator<char const*,
> std::string>, std::allocator<boost::sub_match<__gnu_cx
> x::__normal_iterator<char const*, std::string> > >, char,
> boost::regex_traits<char, boost::cpp_regex_traits<char> >
> >(__gnu_cxx::__normal_iterator<char const*, std::string>, __g
> nu_cxx::__normal_iterator<char const*, std::string>,
> boost::match_results<__gnu_cxx::__normal_iterator<char const*,
> std::string>, std::allocator<boost::sub_match<__gnu_cxx::__no
> rmal_iterator<char const*, std::string> > > >&, boost::basic_regex<char,
> boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&,
> boost::regex_constants::_match_flags
> )':
> /usr/include/boost/regex/v4/regex_match.hpp:50: undefined reference to
> `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*,
> std::string>, std::allocator<boo
> st::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >,
> boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match()'
> ../build/debug/libparquet.a(metadata.cc.o): In function
> `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*,
> std::string>, std::allocator<boost::sub_match<_
> _gnu_cxx::__normal_iterator<char const*, std::string> > >,
> boost::regex_traits<char, boost::cpp_regex_traits<char> >
> >::perl_matcher(__gnu_cxx::__normal_iterator<char const*, st
> d::string>, __gnu_cxx::__normal_iterator<char const*, std::string>,
> boost::match_results<__gnu_cxx::__normal_iterator<char const*,
> std::string>, std::allocator<boost::sub_match<
> __gnu_cxx::__normal_iterator<char const*, std::string> > > >&,
> boost::basic_regex<char, boost::regex_traits<char,
> boost::cpp_regex_traits<char> > > const&, boost::regex_constant
> s::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::string>)':
> /usr/include/boost/regex/v4/perl_matcher.hpp:365: undefined reference to
> `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*,
> std::string>, std::allocator<b
> oost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> >
> >, 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)'
> collect2: error: ld returned 1 exit status
> examples/CMakeFiles/reader-writer.dir/build.make:103: recipe for target
> 'build/debug/reader-writer' failed
> make[2]: *** [build/debug/reader-writer] Error 1
> CMakeFiles/Makefile2:628: recipe for target 'examples/CMakeFiles/reader-writer.dir/all'
> failed
> make[1]: *** [examples/CMakeFiles/reader-writer.dir/all] Error 2
> Makefile:138: recipe for target 'all' failed
>
> Thanks in advance for your help!
> Young
>