Using Macports' gcc8 to build C programs and libraries

Chris Jones jonesc at hep.phy.cam.ac.uk
Mon Apr 1 12:35:32 UTC 2019


Hi,

I suspect the issue is Apple is seemingly phasing out the standard 
includes as part of /usr/include. Can you test to see if you have the file

/usr/include/sys/cdefs.h

?

I suspect you don't, even if you have the commandline tools package 
installed.

In Xcode 10, Apple is shipping a hidden dmg that installs these. See for 
instance

<https://apple.stackexchange.com/questions/337940/why-is-usr-include-missing-i-have-xcode-and-command-line-tools-installed-moja>

As the above article states, going forward you should not assume that 
/usr/include will be present. My bet is that dmg will disappear one day.

This is why I still maintain if you want to support macOS, you should be 
looking to support clang. The command line package installed versions of 
these are just wrappers around Xcode

Titan ~ > which clang
/usr/bin/clang
Titan ~ > clang -v
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

and as such by default know to look in the Xcode area for the various 
headers.

cheers Chris


On 01/04/2019 12:13 pm, Mojca Miklavec wrote:
> On Mon, 1 Apr 2019 at 12:18, Sean Lake wrote:
>>
>> As far as I know I have command line tools installed - I'm not even
>> sure how I could get MacPorts installed without them. Adding
>> "-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include"
>> to CFLAGS appears to have fixed the problem
> 
> Does that mean that clang automatically searches the relevant path and gcc not?
> Does that mean that we would need to somehow find a fix for our gcc ports?
> 
> It's true that gcc is a second-class citizen on macs nowadays. It
> makes perfect sense to make sure that the project is buildable with
> gcc, in particular if you spend a lot of time optimizing flags, but it
> would also be nice to test compilations with clang, just in case.
> 
> (You probably know this, but note that if you plan to distribute
> binaries for your software and you compile it with gcc, the users
> might need to have macports installed as well, since the binaries will
> depend on libstdc++ which is not present on stock macOS. Unless you
> statically link with libstdc++ which is slightly less trivial than on
> Linux.)
> 
> Mojca
> 


More information about the macports-users mailing list