MacBook M1+Ventura下KMP编译报错:Could not initialize class llvm.llvm
针对你在M1芯片MacBook(macOS Ventura 13.0.1)上执行KMP的linkReleaseFrameworkIos任务时出现的Could not initialize class llvm.llvm报错,即便更换多个Kotlin版本仍无法解决,可能的原因如下:
系统安全权限限制:macOS Ventura强化了动态库加载的安全策略,虽然你已为IntelliJ授予开发者工具权限,但Konan加载
libllvmstubs.dylib可能还需要完全磁盘访问权限。此外,系统完整性保护(SIP)可能对~/.konan目录下的预构建库施加了额外限制,旧版Konan的库未适配Ventura的安全规则,导致加载失败。Konan预构建库损坏或兼容性不足:你更换的Kotlin版本对应的Konan预构建包可能存在下载不完整、本地缓存损坏的情况——即便
libllvmstubs.dylib文件存在,其内部结构已损坏,无法被Ventura的动态加载器识别。另外,部分旧版Konan的aarch64架构预构建库未针对Ventura做适配,与系统的动态库加载机制不兼容。动态库依赖链断裂:
libllvmstubs.dylib依赖系统底层库,Ventura升级后部分系统库的版本或路径发生变化,导致该stubs库无法找到所需依赖。可以通过执行以下命令检查其依赖情况:otool -L /Users/hasanshaddad/.konan/kotlin-native-prebuilt-macos-aarch64-1.5.30/konan/nativelib/1650369144349498599/libllvmstubs.dylib查看输出中是否有标记为
not found的依赖项。Gradle运行环境变量异常:Ventura对进程环境变量的传递做了限制,Gradle任务可能未正确继承
DYLD_LIBRARY_PATH等关键变量,导致Konan编译器无法定位动态库的依赖路径。另外,JAVA_HOME配置错误也可能干扰Kotlin Native的运行环境,间接引发库加载失败。
内容的提问来源于stack exchange,提问作者Hasan Shaddad

