You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS运行CMake生成的可执行文件时缺失libSystem.B.dylib求助

问题:M1 MacOS Ventura 13.1下CMake编译程序运行时dyld库加载失败

运行CMake编译生成的可执行文件时出现以下错误:

dyld[5005]: dyld cache '(null)' not loaded: syscall to map cache into shared region failed
dyld[5005]: Library not loaded: /usr/lib/libSystem.B.dylib
  Referenced from: <7EB1C677-BB05-338C-8B29-CC2803CB8C21> /Users/pop/Desktop/Lang
Reason: tried: '/usr/lib/libSystem. " B.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/lib/libSystem.B.dylib' (no such file), '/usr/lib/libSystem.  B.dylib' (no such file, no dyld cache), '/usr/local/lib/libSystem.    B.dylib' (no such file)

使用的CMake配置文件如下:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(App)
set(programName App)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} &quot;${CMAKE_SOURCE_DIR}/CMakeFiles/&quot;)
set(CMAKE_C_FLAGS &quot;${CMAKE_C_FLAGS}&quot;)
set(CMAKE_C_COMPILER &quot;clang&quot;)
set(CMAKE_CXX_COMPILER &quot;clang++&quot;)
file(GLOB SRC &quot;src/*/*.c&quot; &quot;src/*/*.h&quot; &quot;src/*.c&quot;)
add_executable(App ${SRC})

项目仅包含一个Hello World的C文件和若干空目录,已尝试执行sudo find / -name libSystem.B.dylib查找库文件但未找到。


解决方案

1. 修复CMake配置中的转义引号问题

你的CMakeLists.txt中使用了HTML转义的&quot;,这会导致编译时插入多余的引号和空格,破坏库的查找路径。将所有&quot;替换为正常的双引号,同时移除不必要的空设置:

修改后的CMakeLists.txt:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(App)
set(programName App)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeFiles/")
set(CMAKE_C_COMPILER "clang")
set(CMAKE_CXX_COMPILER "clang++")
file(GLOB SRC "src/*/*.c" "src/*/*.h" "src/*.c")
add_executable(App ${SRC})

2. 验证源文件正确性

确保src目录下的C文件是标准的Hello World代码,例如src/main.c:

#include <stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}

3. 清理旧构建文件并重新编译

# 清理旧构建目录
rm -rf build/
# 创建新构建目录并编译
mkdir build && cd build
cmake ..
make
# 运行程序
./App

4. 关于libSystem.B.dylib的说明

在M1 MacOS中,libSystem.B.dylib并不是直接存在于/usr/lib下的文件,实际系统的libSystem是一个符号链接:

ls -l /usr/lib/libSystem.dylib
# 输出:/usr/lib/libSystem.dylib -> /System/Library/Frameworks/System.framework/System

错误中出现的异常路径是转义引号导致的,修复CMake配置后即可正常链接系统库。

内容的提问来源于stack exchange,提问作者kon coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 08:05:25