[MacPorts] #55604: source-highlight: boost - symbol(s) not found for architecture x86_64

MacPorts noreply at macports.org
Fri Dec 29 17:25:17 UTC 2017


#55604: source-highlight: boost - symbol(s) not found for architecture x86_64
-------------------------------+-------------------
  Reporter:  adfernandes       |      Owner:
      Type:  defect            |     Status:  new
  Priority:  Normal            |  Milestone:
 Component:  ports             |    Version:  2.4.2
Resolution:                    |   Keywords:
      Port:  source-highlight  |
-------------------------------+-------------------

Comment (by ryandesign):

 Replying to [comment:3 michaelld]:
 > Some ports build nicely with G++ / libstdc++, while others do with
 Clang++ / libc++, while most can build using either. Generally once the
 correct c++ stdlib is set the project will build & execute correctly, and
 it is possible to mix & match the c++ stdlib for different ports so long
 as there are no conflicts.

 It has been our experience that it is ''not'' generally possible to mix
 and match the C++ stdlib, because a program or library built with one C++
 stdlib might try to exchange C++ objects with a program or library built
 with a different C++ stdlib, and that's not possible and will result in
 build failures (if the two C++ stdlibs are libstdc++ and libc++) or
 runtime crashes (if the two C++ stdlibs are two different versions of
 libstdc++). For this reason, we don't in MacPorts try to do that. We
 require the user to specify a single global C++ stdlib that all ports will
 use. Following the defaults that Apple has provided in macOS, users of
 10.9 and later use libc++, and users of 10.8 and earlier use libstdc++
 (unless they use LibcxxOnOlderSystems).

 Apple's gcc 4.2.1-era libstdc++ included with the system does not support
 C++11 or newer, so for ports that require C++11 or newer, the cxx11 1.1
 portgroup offers an alternative for 10.8 and earlier where the compiler is
 instructed to use a newer libstdc++ from the libgcc port, in a
 compatibility mode that is supposed to play nice with Apple's older
 libstdc++, so that exchange of objects is possible. This is nicer for the
 user because unlike LibcxxOnOlderSystems it does not require the user to
 uninstall and reinstall all ports from source.

 There are some exceptions to the prohibition on changing the C++ stdlib on
 a port by port basis. For example mongodb and cmake require C++11, but
 don't use any other C++ libraries, and don't provide any C++ libraries, so
 they stand alone and it's ok for them to force the use of libc++ even on
 systems that use libstdc++ for other ports.

 > For this specific ticket, going back to my experience with building GNU
 Radio, it seems likely that there is some other boost and/or source-
 highlight dependency that isn't playing nicely with Boost / source-
 highlight / G++ here. For GR, I had to rebuild something like 5
 dependencies to use the correct c++ stdlib before GR would both build and
 execute. It was quite the effort, IIRC. Boost was one of them, and
 required g++ hence why I added those variants back into the mix. Once I
 had all of the c++ stdlib settings correct, GR worked nicely on the target
 system (IIRC 10.6 not using the various hacks that are now in place).

 Looks like the gnuradio port already uses the cxx11 1.1 portgroup, so
 presumably everything should be working fine there without any of its
 dependencies needing to do anything special.

--
Ticket URL: <https://trac.macports.org/ticket/55604#comment:4>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list