调研这个的原因,是因为有个同事在macOS 12.2上打包好的程序,放在macOS 10.15上运行时报错:

Dyld Error Message:
  Symbol not found: __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv
  Referenced from: /Library/Application Support/XXX.dylib (which was built for Mac OS X 12.2)
  Expected in: /usr/lib/libc++.1.dylib

调研了一番,发现这个是因为Apple的SDK使用weak linking来支持不同版本的macOS。

目标文件所需的最低macOS版本有个专有名称“deployment target”。