LibCxxOnOlderSystems - and more software that is pushing for gcc
Lawrence Velázquez
larryv at macports.org
Sun Sep 25 07:47:47 PDT 2016
> On Sep 25, 2016, at 8:29 AM, Ken Cunningham <ken.cunningham.webuse at gmail.com> wrote:
>
> What is happening exactly on my MacPros running 10.11, I wonder?
> Software installed by macports on 10.11 is using clang++ (mostly) and
> g++ (sometimes).
What MacPorts-provided software is using g++? It should not be doing
that.
> clang++ is linking against libc++, and g++ is presumably linking
> against libstdc++ as that is what it does
>
> Why exactly is the situation different on a LibCxxOnOlderSystems
> installation?
As Chris said, it's easier to get lucky and avoid conflicts mixing two
libstdc++/libsupc++ than it is mixing libstdc++ and libc++.
There is no fundamental difference, just an increase in visibility.
>> As far as I know, you can use the C or Fortran compilers as much as
>> you'd like. Several ports do this for various reasons.
>
> But not easily to link c++ code against libc++.
Right.
>> These dependencies are coming from the +gfortran variants, which
>> instruct the builds to use the Fortran compiler from gcc6. This is
>> fine and expected.
>
> but won't work on LibCxxOnOlderSystems, if it links the binaries
> against lilbstdc++
Why would the Fortran compiler link its build products against
libstdc++? Are you seeing this behavior?
>> What links against libstdc++, specifically?
>
> gcc6 itself, at least.
This is not a problem unless GCC provides C++ API.
> It would appear there are a few choices.
>
> 1. give up and accept it's an either / or situation
> 2. just let it go on, and see how it works with cross linking -- is this
> what 10.11 macports does?
No. No MacPorts-provided software should be compiling with
MacPorts-provided FSF g++. We consider such behavior a bug.
> 3. figure out how to make this work:
> <http://libcxx.llvm.org/docs/UsingLibcxx.html#using-libc-with-gcc>,
> possibly by wrapping g++ in a shell script that does it for every use.
I don't think it's worth accommodating g++ at all. MacPorts should not
be using it, and anyone who wants to use it for their own projects might
not appreciate us hijacking its default C++ standard library.
Apple handled this in their olde tyme libstdc++ by fixing it to use
libc++abi instead of libsupc++.
> 4. a parallel installation of macports with libstdc++ and gcc, to
> install gimp, octave, qemu, and whatever other similar gcc-requiring
> ports come along.
Please provide evidence that these ports are actually using g++. If they
are, then they should be fixed to not do so. If they are not and are
only using gcc and/or gfortran, then *there is no problem*.
FWIW, I have py35-numpy+gcc6 installed, and none of its object files
link to libstdc++, although many of them do link to MacPorts'
libgcc_s.1.dylib.
% port -q contents py35-numpy | xargs otool -L | fgrep 'libstdc++'
% echo $?
1
vq
More information about the macports-users
mailing list