1858-11-17

Big Sur

New in macOS Big Sur 11.0.1, the system ships with a built-in dynamic linker cache of all system-provided libraries.
As part of this change, copies of dynamic libraries are no longer present on the filesystem.
Code that attempts to check for dynamic library presence by looking for a file at a path or
enumerating a directory will fail. Instead, check for library presence by attempting to
dlopen() the path, which will correctly check for the library in the cache. (62986286)

This means that we no longer ship individual dylib files on disk. You should try
passing in the -isysroot <PATH_TO_MACOS_SDK> flag to your clang link invocation.

Here's a good example of the kind of work to be done managing Darwin changes with <nixpkgs>:

impossible to link (ld / clang) liboping on macOS Big Sur 11

The big solution is to update the expressions so that they can run with the new placement of Apple's runtime libraries.

[darwin (Big Sur): tbd based stdenv #98541](https://github.com/NixOS/nixpkgs/pull/98541)

[darwin: Big Sur-compatible stdenv bootstrap #107013](https://github.com/NixOS/nixpkgs/pull/107013)

[the fixes](https://gist.github.com/LnL7/a17a042dd21258b957279637bb6be627)

See also:

Nixpkgs macOS Stdenv Updates

for more background.

Apple/darwin/Mac is and always will be a moving target:

Apple cctools and ld64 port for Linux, BSD and macOS

big sur release notes

big sur release notes

The important change is:

macos big sure issue nix bootstrap macos macos and clang

Many Mac/Nix issues boil down to just being able to locate the right name. /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation

    _OBJC_CLASS_$_NSArray is undefined

If you are just missing \_NS\* symbols you just need -framework CoreFoundation

Also of interest is using the NixOS virtual machine.