Boost logo

Boost :

Subject: Re: [boost] Libc++ failures on linux
From: Tom Kent (lists_at_[hidden])
Date: 2017-03-12 03:43:26


On Fri, Mar 10, 2017 at 7:43 PM, Andrey Semashev via Boost <
boost_at_[hidden]> wrote:

> On Sat, Mar 11, 2017 at 3:32 AM, Deniz Bahadir via Boost
> <boost_at_[hidden]> wrote:
> > Am 11.03.2017 um 00:22 schrieb Andrey Semashev via Boost:
> >>
> >> /usr/include/c++/v1/string:1938:44: error: 'basic_string<_CharT,
> >> _Traits, _Allocator>' is missing exception specification 'noexcept'
> >> basic_string<_CharT, _Traits, _Allocator>::basic_string(const
> >> allocator_type& __a)
> >> ^
> >> /usr/include/c++/v1/string:1326:40: note: previous declaration is here
> >> _LIBCPP_INLINE_VISIBILITY explicit basic_string(const
> allocator_type&
> >> __a)
> >>
> >> This happens after boost/config.hpp is included, which means that
> >> cstddef is found. Indeed, cstddef is in /usr/include/c++/v1 on my
> >> system, so the compiler clearly looks there.
> >>
> >> The error itself looks like a bug in libc++.
> >
> > This is a known error on Ubuntu/Debian:
> > https://bugs.launchpad.net/ubuntu/+source/libc++/+bug/1610168
> >
> > And the fix is simple, presuming one can modify header-files of the
> libc++
> > installation:
> > http://stackoverflow.com/a/38385967
>
> I guess, one could make a local change like that, but modifying system
> headers is generally a bad idea and can't be recommended. I mean, even
> if Tom makes the change on the test machine, that doesn't make Boost
> actually work on users' machines. Which means libc++ can not be
> officially supported.
>
> >> /usr/include/c++/v1/cxxabi.h:21:10: fatal error: '__cxxabi_config.h'
> >> file not found
> >> #include <__cxxabi_config.h>
> >>
> >> This error is more interesting. I can see this #include in my local
> >> libc++ as well, yet I can't find this file on my system.
> >
> > On my Ubuntu machine I was able to fix this error by adding the following
> > path to the include-search-path: /usr/include/libcxxabi
> >
> > If you do not have this path on your Ubuntu/Debian machine, you need to
> > install libc++abi, too. (DEB-Package: libc++abi-dev)
>
> Right, which makes it a packaging bug, because the package should have
> been pulled as a dependency of libc++-dev.
>
> > Hope that helps,
>
> It does, thanks.

Installing the baseline ubuntu libc++abi-dev *and* adding
`-I/usr/include/libcxxabi` to my user-config.jam file got rid of the file
not found #include <__cxxabi_config.h>
Once I get a chance to make a decent solution, I'm going to put a fix in my
docker image for the `/usr/include/c++/v1/string:1938:44: error:
'basic_string<...` issue.

Tom


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk