GNAT toolchain now broken after OS upgrade to MacOS 26 (Tahoe), arm64

Thanks for the pointer.

Unfortunately, the linking error is still there:

ld: library not found for -lSystem

Regarding Simon stuff, he used:

–with-sysroot=$SDKROOT/../MacOSX14.sdk                             `
–with-specs=“%{!-sysroot:–sysroot=%:if-exists-else($XCODE $CLT)}” 

Are Alire/GNAT maintainers aware of that?

(They were in the past as GNAT 14 was ok).

Hi;

I have upgraded to MacOS 16.0.1 with the associated xCode.

I have downloaded the gnat 16 pre-release.

I am using this (suggested by Ryan):

gnatmake -v ./shift_left.adb -largs -Wl,-syslibroot,“$(xcrun --sdk macosx --show-sdk-path)”

I am gettng the linking error you mentioned:

ld: library not found for -lSystem

The prior gnat release I was using (15.1.0-2) with the gnatmake syntax as suggested by Ryan does work (it compiles with the warning, links and executes as expected).

Looking forward to the next release of GNAT, with this bug fixed and an arm64 MacOS platform.

Thanks,

RBE

FYI: the goal with this snapshot is to have weekly snapshot releases, so there are no stability guarantees. We will publish these automatically in an alire index on the GNAT-FSF-builds repo ( GitHub - alire-project/GNAT-FSF-builds at snapshots-index )

Alire, for whatever reason, does not seem to have created the 15.2 artifact… So the latest stable version is v15.1

We base the macos ARM releases for GNAT 15 on GitHub - iains/gcc-15-branch: GCC 15 for Darwin with experimental Arm64 support. RC1 [April 2025], which does not yet have a proper release (15.1 is based on the rc1), so there is no 15.2 version yet.

1 Like

There are environment variables who do the same and they work with Alire:

typeset -x -g -U -T LD_LIBRARY_PATH	ld_library_path	    ":"
typeset -x -g -U -T LDFLAGS			ldflags			    " "
typeset -x -g -U -T LIBRARY_PATH	library_path		":"
typeset -x -g	    SDKROOT="$(xcrun --show-sdk-path)"

ld_library_path=(${SDKROOT}/usr/lib ${ld_library_path})
ldflags=(-L${SDKROOT}/usr/lib ${ldflags})
library_path=(${SDKROOT}/usr/lib ${library_path})

You probably also want to set C_INCLUDE_PATH to ${SDKROOT}/usr/include to be able to compile C code.

2 Likes