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
>>> >> >
>>> >> >
>>> >>
>>
>>
>

Reply via email to