git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Building against arrow static library


See note about this in

https://github.com/apache/arrow/blob/master/python/doc/source/development.rst#known-issues

On Tue, Jun 26, 2018 at 7:10 AM, Wes McKinney <wesmckinn@xxxxxxxxx> wrote:
> Ah, ok, I think I know the issue then. You need to pass
> -DCMAKE_CXX_FLAGS='-D_GLIBCXX_USE_CXX11_ABI=0' when building all your
> libraries if you use the conda-forge libraries, since they are built
> using the old gcc ABI
>
> On Tue, Jun 26, 2018 at 5:11 AM, Praveen Kumar <praveen@xxxxxxxxxx> wrote:
>> Hi Wes,
>>
>> Thanks for the suggestion. I purged the system boost libs and removed LLVM
>> (suspecting it might be bringing in some static dependencies) too. Then
>> recompiled Arrow and tried to link Gandiva again but no avail.
>>
>> It looks similar to the one seen here,
>> https://issues.apache.org/jira/browse/ARROW-2318.
>>
>> Will circle back if i find the root cause.
>>
>> Thx.
>>
>> On Tue, Jun 26, 2018 at 2:27 AM, Wes McKinney <wesmckinn@xxxxxxxxx> wrote:
>>
>>> hi Praveen,
>>>
>>> Are /usr/include or /usr/local/include getting added to your build
>>> paths (this could happen if you have LLVM or some other library in
>>> your system paths)?
>>>
>>> Unfortunately, when you're using conda libraries or an external
>>> toolchain at all, you have to be really strict about toolchain
>>> isolation. So here I think what's happening is that even you are
>>> setting $BOOST_ROOT to your external toolchain location, but the C++
>>> compiler is picking up the other Boost from your system path. You can
>>> test this hypothesis by purging all your system Boost libraries using
>>> apt-get purge
>>>
>>> - Wes
>>>
>>> On Mon, Jun 25, 2018 at 1:13 PM, Praveen Kumar <praveen@xxxxxxxxxx> wrote:
>>> > Tried that did not help.
>>> >
>>> > I also tried to link in the boost libraries myself since it was not clear
>>> > if arrow was including the transitive dependencies from the build script.
>>> > That does not help as well.
>>> >
>>> > On Mon, Jun 25, 2018 at 7:55 PM, Dimitri Vorona <
>>> > alendit@xxxxxxxxxxxxxx.invalid> wrote:
>>> >
>>> >> Hi,
>>> >>
>>> >> I'd this a similar issue some time ago, and the solution was building
>>> after
>>> >> a clean checkout, which I interpreted as some kind of caching issue.
>>> >>
>>> >> Generally, I've found that starting with a clean checkout and following
>>> the
>>> >> steps from [0] never failed for me.
>>> >>
>>> >> Hope that helps!
>>> >>
>>> >> Cheers,
>>> >> Dimitri.
>>> >>
>>> >> [0]: https://arrow.apache.org/docs/python/development.html
>>> >>
>>> >> On Mon, Jun 25, 2018 at 4:17 PM Praveen Kumar <praveen@xxxxxxxxxx>
>>> wrote:
>>> >>
>>> >> > Hi Folks,
>>> >> >
>>> >> > I am a newbie to cpp build/packaging. I need some help on building
>>> >> against
>>> >> > the arrow static library.
>>> >> >
>>> >> > I tried the following
>>> >> >
>>> >> > 1. Using both arrow and boost from conda (latest versions 0.9 and
>>> 1.67).
>>> >> > 2. Building arrow from source and boost from conda.
>>> >> > 3. Built both from source.
>>> >> >
>>> >> > But i am getting this error - with all combinations
>>> >> >
>>> >> > 1. boost/regex/v4/regex_match.hpp:50: undefined reference to
>>> >> > `boost::re_detail_106700::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()'
>>> >> >
>>> >> > 2. boost/regex/v4/basic_regex.hpp:381: undefined reference to
>>> >> > `boost::basic_regex<char, boost::regex_traits<char,
>>> >> > boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*,
>>> >> > unsigned int)'
>>> >> >
>>> >> > 3. boost/regex/v4/perl_matcher.hpp:386: undefined reference to
>>> >> > `boost::re_detail_106700::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)'
>>> >> >
>>> >> > I am including the boost headers from same path that arrow was built
>>> >> with.
>>> >> > Surprisingly it works in travis(ubuntu trusty) and in mac but fails
>>> on a
>>> >> > stand alone Ubuntu machine.
>>> >> >
>>> >> > Googling around some of the root causes seem to be building and
>>> linking
>>> >> > with different versions of boost/compiler differences. Both do not
>>> apply
>>> >> > here.
>>> >> >
>>> >> > Has anyone faced this before?
>>> >> >
>>> >> > Thx.
>>> >> >
>>> >>
>>>