You are not logged in.

#1 2015-12-27 06:01:05

Malvineous
Member
From: Brisbane, Australia
Registered: 2011-02-03
Posts: 195
Website

C++ ABI - can't compile XMMS2/Promoe (Boost problem?)

Hi all,

I'm struggling a bit with the C++ ABI change, as it looks like I can no longer compile the Promoe client for XMMS2.

I have compiled xmms2-git from AUR, which seems to work fine.  But when I try to compile promoe-git, I get undefined linker errors related to strings in the cxx11 namespace, within some of the Boost functions.

Neither of these programs use C++11 so I'm not really sure what to do.  I've tried compiling them with -D_GLIBCXX_USE_CXX11_ABI=0 which removes the cxx11 namespace from the error messages, but they still happen and at the same places.

Is anyone else able to compile these two programs?

Offline

#2 2015-12-27 23:52:59

The Infinity
Member
Registered: 2014-07-05
Posts: 92
Website

Re: C++ ABI - can't compile XMMS2/Promoe (Boost problem?)

I don't know anything about these applications, but I can tell you what the error (invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’) means:
- It is no linker error and not related to the ABI change of the C++ standard library.
- ‘boost::STATIC_ASSERTION_FAILURE<false>’ is declared but not defined. However, the definition is required.
- There is probably a boost #include missing.

Last edited by The Infinity (2015-12-27 23:54:32)

Offline

#3 2015-12-28 07:49:40

Malvineous
Member
From: Brisbane, Australia
Registered: 2011-02-03
Posts: 195
Website

Re: C++ ABI - can't compile XMMS2/Promoe (Boost problem?)

Actually this is not what the error means in this case.  boost::STATIC_ASSERTION_FAILURE must always be undefined - this is how static assertions cause compilation to fail - if you were to define this, all your error checking will be ignored.  But if you look to see *why* there is a compile-time (static) assertion failure, it looks like Boost is complaining that there is no template specialisation for boost::variant with an std::cxx11::basic_string parameter, perhaps because it is std::basic_string instead?

Isn't it a bit suspicious that the failure should be because it can't find an std::cxx11::basic_string specialisation, which is one of the new types introduced by the new ABI?

Offline

Board footer

Powered by FluxBB