How did you build Boost? If you could upload a complete shell transcript starting from a clean git clone (run "git clean -fdx ." in your clone) to GitHub gist or someplace else I can take a closer look. Ubuntu 16.04 claims to be shipping Boost 1.58, so you may need to set a different $BOOST_ROOT or update your Boost.
https://launchpad.net/ubuntu/xenial/+package/libboost-dev On Wed, Feb 22, 2017 at 3:02 PM, Keith Chapman <keithgchap...@gmail.com> wrote: > Interestingly if I build with the following (instead of having > -DCMAKE_CXX_COMPILER=g++-4.9 -DCMAKE_C_COMPILER=gcc-4.9) > > export CC="gcc-4.9" > export CXX="g++-4.9" > cmake .. -DCMAKE_BUILD_TYPE=release -DPARQUET_BUILD_TESTS=Off > > I get rid of the arrow related linkage errors and end up with only boost > related ones. Cmake shows that I have boost 1.54 and I'm building on Ubuntu > 16.04 > > [ 94%] Linking CXX executable ../release/parquet-scan > ../release/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> > >>::match_match()': > /usr/local/include/boost/regex/v4/perl_matcher_non_recursive.hpp:973: > undefined reference to > `boost::match_results<__gnu_cxx::__normal_iterator<char const*, > std::string>, > std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, > std::string> > > >>::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char > const*, std::string>, > std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, > std::string> > > > const&)' > ../release/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> > >>::match_prefix()': > /usr/local/include/boost/regex/v4/perl_matcher_common.hpp:333: undefined > reference to `boost::match_results<__gnu_cxx::__normal_iterator<char const*, > std::string>, > std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, > std::string> > > >>::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char > const*, std::string>, > std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, > std::string> > > > const&)' > ../release/libparquet.a(metadata.cc.o): In function `perl_matcher': > /usr/local/include/boost/regex/v4/perl_matcher.hpp:374: undefined reference > to `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> > >>::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 > tools/CMakeFiles/parquet-dump-schema.dir/build.make:106: recipe for target > 'release/parquet-dump-schema' failed > make[2]: *** [release/parquet-dump-schema] Error 1 > CMakeFiles/Makefile2:716: recipe for target > 'tools/CMakeFiles/parquet-dump-schema.dir/all' failed > make[1]: *** [tools/CMakeFiles/parquet-dump-schema.dir/all] Error 2 > make[1]: *** Waiting for unfinished jobs.... > > Regards, > Keith. > > http://keith-chapman.com > > On Wed, Feb 22, 2017 at 11:51 AM, Keith Chapman <keithgchap...@gmail.com> > wrote: >> >> Yes, I get it on a clean build. >> >> Regards, >> Keith. >> >> http://keith-chapman.com >> >> On Wed, Feb 22, 2017 at 11:42 AM, Wes McKinney <wesmck...@gmail.com> >> wrote: >>> >>> Do you get these errors from a clean build (i.e. you've removed all >>> the artifacts and CMake files from your prior build)? We are building >>> in Travis CI with gcc/g++ 4.9 and have not been having any issues: >>> >>> >>> https://github.com/apache/parquet-cpp/blob/master/ci/before_script_travis.sh#L20 >>> >>> On Wed, Feb 22, 2017 at 2:28 PM, Keith Chapman <keithgchap...@gmail.com> >>> wrote: >>> > Hi Wes, >>> > >>> > Tried the patch and it does the trick, thank you for the prompt >>> > response. >>> > Also I noticed another issue, not sure if you'd regard it as a bug or >>> > not >>> > but I'll throw it out for your consideration. If I build the parquet >>> > library with >>> > >>> > "cmake . -DCMAKE_BUILD_TYPE=release -DPARQUET_BUILD_TESTS=Off" >>> > everything >>> > builds fine as expected, but if I build it with "cmake . >>> > -DCMAKE_BUILD_TYPE=release -DCMAKE_CXX_COMPILER=g++-4.9 >>> > -DCMAKE_C_COMPILER=gcc-4.9 -DPARQUET_BUILD_TESTS=Off" I end up with a >>> > bunch >>> > of linkage errors as follows, >>> > >>> > Linking CXX executable ../release/parquet_reader >>> > ../release/libparquet.a(reader.cc.o): In function >>> > `parquet::DictionaryDecoder<parquet::DataType<(parquet::Type::type)6> >>> >>::SetDict(parquet::Decoder<parquet::DataType<(parquet::Type::type)6> >>> >> >*)': >>> > >>> > /home/keith/projects/bs/axstreamBigD/external_packages/parquetcpp/src/parquet/encoding-internal.h:382: >>> > undefined reference to `arrow::Status::ToString() const' >>> > ../release/libparquet.a(reader.cc.o): In function >>> > `parquet::DictionaryDecoder<parquet::DataType<(parquet::Type::type)7> >>> >>::SetDict(parquet::Decoder<parquet::DataType<(parquet::Type::type)7> >>> >> >*)': >>> > >>> > /home/keith/projects/bs/axstreamBigD/external_packages/parquetcpp/src/parquet/encoding-internal.h:402: >>> > undefined reference to `arrow::Status::ToString() const' >>> > ../release/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> > >>> >>::match_match()': >>> > /usr/local/include/boost/regex/v4/perl_matcher_non_recursive.hpp:973: >>> > undefined reference to >>> > `boost::match_results<__gnu_cxx::__normal_iterator<char const*, >>> > std::string>, >>> > std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char >>> > const*, >>> > std::string> > > >>> >>::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char >>> > const*, std::string>, >>> > std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char >>> > const*, >>> > std::string> > > > const&)' >>> > ../release/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> > >>> >>::match_prefix()': >>> > /usr/local/include/boost/regex/v4/perl_matcher_common.hpp:333: >>> > undefined >>> > reference to `boost::match_results<__gnu_cxx::__normal_iterator<char >>> > const*, std::string>, >>> > std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char >>> > const*, >>> > std::string> > > >>> >>::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char >>> > const*, std::string>, >>> > std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char >>> > const*, >>> > std::string> > > > const&)' >>> > ../release/libparquet.a(metadata.cc.o): In function `perl_matcher': >>> > ..... >>> > And a lot more >>> > >>> > Regards, >>> > Keith. >>> > >>> > http://keith-chapman.com >>> > >>> > On Wed, Feb 22, 2017 at 10:57 AM, Wes McKinney <wesmck...@gmail.com> >>> > wrote: >>> > >>> >> You can try out this patch if you like: >>> >> >>> >> https://github.com/apache/parquet-cpp/pull/258 >>> >> >>> >> This should be included in the next 1.0.0 RC >>> >> >>> >> On Wed, Feb 22, 2017 at 1:32 PM, Keith Chapman >>> >> <keithgchap...@gmail.com> >>> >> wrote: >>> >> > Thanks Wes. >>> >> > >>> >> > Regards, >>> >> > Keith. >>> >> > >>> >> > http://keith-chapman.com >>> >> > >>> >> > On Wed, Feb 22, 2017 at 10:30 AM, Wes McKinney <wesmck...@gmail.com> >>> >> wrote: >>> >> >> >>> >> >> I'm able to reproduce the issue on Ubuntu 14.04 >>> >> >> >>> >> >> Linking CXX shared library debug/libparquet.so >>> >> >> /usr/bin/ld: /usr/lib/libsnappy.a(snappy.o): relocation >>> >> >> R_X86_64_32S >>> >> >> against `.rodata' can not be used when making a shared object; >>> >> >> recompile with -fPIC >>> >> >> /usr/lib/libsnappy.a: error adding symbols: Bad value >>> >> >> collect2: error: ld returned 1 exit status >>> >> >> >>> >> >> Patch forthcoming >>> >> >> >>> >> >> On Wed, Feb 22, 2017 at 1:29 PM, Keith Chapman >>> >> >> <keithgchap...@gmail.com >>> >> > >>> >> >> wrote: >>> >> >> > Hi Wes, >>> >> >> > >>> >> >> > No I don't have SNAPPY_HOME set. Yes this seems similar to 885 >>> >> >> > >>> >> >> > On Feb 22, 2017 10:25 AM, "Wes McKinney" <wesmck...@gmail.com> >>> >> >> > wrote: >>> >> >> >> >>> >> >> >> hi Keith, >>> >> >> >> >>> >> >> >> It's not caused by PARQUET-885, but it is the same type of >>> >> >> >> problem. >>> >> Do >>> >> >> >> you have $SNAPPY_HOME set? If you compile your own thirdparty >>> >> >> >> libraries, they need to be built with -fPIC to support static >>> >> >> >> linking >>> >> >> >> into a shared library. Otherwise it's easier to let parquet-cpp >>> >> >> >> build >>> >> >> >> its own thirdparty toolchain. Because some Linux distributions >>> >> >> >> don't >>> >> >> >> set -fPIC in their packages, we should make a similar change as >>> >> >> >> PARQUET-885 for Snappy. Looking into it now... >>> >> >> >> >>> >> >> >> I'm also going to add a note about this to the README. >>> >> >> >> >>> >> >> >> - Wes >>> >> >> >> >>> >> >> >> On Wed, Feb 22, 2017 at 1:05 PM, Keith Chapman >>> >> >> >> <keithgchap...@gmail.com> >>> >> >> >> wrote: >>> >> >> >> > Hi, >>> >> >> >> > >>> >> >> >> > I'm trying to build master and I get the following error, I >>> >> >> >> > have >>> >> the >>> >> >> >> > .so >>> >> >> >> > versions of the files as seen below too, Is this somewhat >>> >> >> >> > relaped >>> >> to >>> >> >> >> > Parquet-885? >>> >> >> >> > >>> >> >> >> > ls /usr/lib/x86_64-linux-gnu/libsnappy. >>> >> >> >> > libsnappy.a libsnappy.so libsnappy.so.1 >>> >> >> >> > libsnappy.so.1.3.0 >>> >> >> >> > >>> >> >> >> > Error seen: >>> >> >> >> > >>> >> >> >> > /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libsnappy.a(snappy.o): >>> >> >> >> > relocation >>> >> >> >> > R_X86_64_32S against `.rodata' can not be used when making a >>> >> >> >> > shared >>> >> >> >> > object; >>> >> >> >> > recompile with -fPIC >>> >> >> >> > /usr/lib/x86_64-linux-gnu/libsnappy.a: error adding symbols: >>> >> >> >> > Bad >>> >> >> >> > value >>> >> >> >> > collect2: error: ld returned 1 exit status >>> >> >> >> > CMakeFiles/parquet_shared.dir/build.make:115: recipe for >>> >> >> >> > target >>> >> >> >> > 'release/libparquet.so' failed >>> >> >> >> > make[2]: *** [release/libparquet.so] Error 1 >>> >> >> >> > CMakeFiles/Makefile2:218: recipe for target >>> >> >> >> > 'CMakeFiles/parquet_shared.dir/all' failed >>> >> >> >> > make[1]: *** [CMakeFiles/parquet_shared.dir/all] Error 2 >>> >> >> >> > Makefile:138: recipe for target 'all' failed >>> >> >> >> > make: *** [all] Error 2 >>> >> >> >> > >>> >> >> >> > Regards, >>> >> >> >> > Keith. >>> >> >> >> > >>> >> >> >> > http://keith-chapman.com >>> >> > >>> >> > >>> >> >> >> >