Hi Dave,
Thanks for your response.
It seems few projects have started to enable c++11 or have ever encountered the c+11 ABI
compatibility issues. Though I do find some real world case like us by googling:
http://lists.dune-project.org/pipermail/dune/2012-June/011533.html
http://www.gossamer-threads.com/lists/engine?do=post_view_flat;post=28172...
The problem is:
1. If your C++ project want to enable the option “std=c++11” when compiling, all the
C++ libraries chain your project link to should be built with this option too (including
boost).
2. If above requirement is not met, it is unsafe. Unsafe doesn’t mean factual
problems. Your process might still work fine even above criteria is not met.
3. But when there is problem, it might be difficult to realize that that is cause by
this, because often what you get is unexpected crash with confusing stack.
Hope I can hear more suggestions/opinions on this problem.
------------------------------
Best Regards
Jacky
From: epel-devel-bounces(a)lists.fedoraproject.org
[mailto:epel-devel-bounces@lists.fedoraproject.org] On Behalf Of Dave Johansen
Sent: Friday, 16 January 2015 2:16 AM
To: EPEL Development List
Subject: Re: [EPEL-devel] Questiona regarding c++11 support
On Wed, Jan 14, 2015 at 9:12 PM, Zhiwei Zhu
<z_zhu@wargaming.net<mailto:z_zhu@wargaming.net>> wrote:
Dear all,
I am not sure whether this has been discussed before or whether it’s appropriate to
discuss this in this list.
My question is about c++11 support for the projects on epel (probably more specifically,
epel7). Do we have any kind of general policy regarding c++11 support?
I am asking this because recently we encountered a problem related to this. The case is
that our project is built with option ‘-std=c++11’ while the library used by our project
on epel (specifically mongo-cxx-driver) was not built with this option, and our process
simply crashes during start.
The root cause is the ABI built with c++11 option is actually not compatible with that
without it. Please refer to
https://gcc.gnu.org/wiki/Cxx11AbiCompatibility.
So the ‘-std=c++11’ draws a clear line between binaries/libraries, all of them must be
built either with it or without it(C code is probably fine). You cannot mix them togother,
otherwise there might be risks.
Is there any general policy regarding this c++11 support? Or just maintainers make the
decision for specific project?
If the question is not approriate to discuss in this list, please ignore it. Or if anyone
has any idea about where I can find relevant information, could you please share with
me?
devtoolset seems to be the right solution for C++11 support because it offers better ABI
compatibility ( see section 2.2.2 at
https://access.redhat.com/documentation/en-US/Red_Hat_Developer_Toolset/3...
).
However, having said that, I previously brought up the idea of making the devtoolset
available for use in the EPEL (
https://lists.fedoraproject.org/pipermail/epel-devel/2013-September/00873... ) but the
conversation never really picked up any traction. I would definitely love to see
devtoolset be made available for use when building packages in the EPEL but I'm just
not sure how to get that ball rolling.
Dave
[
wargaming.net]
EgzO3mXGcK
This e-mail may contain CONFIDENTIAL AND PROPRIETARY INFORMATION and/or PRIVILEGED AND
CONFIDENTIAL COMMUNICATION intended solely for the recipient and, therefore, may not be
retransmitted to any party outside of the recipient's organization without the prior
written consent of the sender. If you have received this e-mail in error please notify the
sender immediately by telephone or reply e-mail and destroy the original message without
making a copy.
Wargaming.net accepts no liability for any losses or damages resulting from
infected e-mail transmissions and viruses in e-mail attachment. kgzO3mXGcg