编译失败:无法初始化类llvm.llvm



我正在使用macOS Ventura 13.0.1的MacBook M1芯片,我的项目是KMP构建一个用于移动应用程序的内部插件。

我有一个自定义的Gradle任务来构建和发布插件到我的本地机器,在我更新到Ventura之前,它曾经完美地工作,但现在我得到的是这个构建错误,无论kotlin编译器到达linkReleaseFrameworkIos任务:

Compilation failed: Could not initialize class llvm.llvm
源文件
  • :
  • 编译器版本信息:Konan: 1.5.30/Kotlin: 1.5.30
  • 输出类型:FRAMEWORK

我尝试使用不同的kotlin版本,如1.6.10,1.7.10和1.7.21仍然弹出相同的错误。

加上我给Intellij访问开发人员工具:(https://i.stack.imgur.com/BpRRb.png)

使用堆栈跟踪运行后:

Compilation failed: Could not initialize class llvm.llvm
* Source files: 
* Compiler version info: Konan: 1.5.30 / Kotlin: 1.5.30
* Output kind: FRAMEWORK

:

java.lang.NoClassDefFoundError: Could not initialize class llvm.llvm
at org.jetbrains.kotlin.backend.konan.llvm.BitcodePhasesKt$contextLLVMSetupPhase$1.invoke(BitcodePhases.kt:34)
at org.jetbrains.kotlin.backend.konan.llvm.BitcodePhasesKt$contextLLVMSetupPhase$1.invoke(BitcodePhases.kt:25)
at org.jetbrains.kotlin.backend.konan.KonanLoweringPhasesKt$makeKonanModuleOpPhase$1.invoke(KonanLoweringPhases.kt:64)
at org.jetbrains.kotlin.backend.konan.KonanLoweringPhasesKt$makeKonanModuleOpPhase$1.invoke(KonanLoweringPhases.kt:62)

:

Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.UnsatisfiedLinkError: Can't load library: /Users/hasanshaddad/.konan/kotlin-native-prebuilt-macos-aarch64-1.5.30/konan/nativelib/1650369144349498599/libllvmstubs.dylib [in thread "Execution worker for ':' Thread 4"]

所需的.dylib确实存在于需要它的地方,但编译器似乎无法加载它。(https://i.stack.imgur.com/eWmck.png)

有什么建议可以引起这样的问题吗?

我通过在终端中执行下一个命令解决了这个问题,确保将命令中的版本更改为您的Kotlin版本(示例中使用的Kotlin版本为1.5.30):

install_name_tool -change @rpath/libc++.1.dylib /usr/lib/libc++.1.dylib ~/.konan/kotlin-native-prebuilt-macos-1.5.30/konan/nativelib/libllvmstubs.dylib

文件夹路径可能也包含arch "x86_64">

install_name_tool -change @rpath/libc++.1.dylib /usr/lib/libc++.1.dylib ~/.konan/kotlin-native-prebuilt-macos-x86_64-1.5.30/konan/nativelib/libllvmstubs.dylib

install_name_tool -change @rpath/libc++.1.dylib /usr/lib/libc++.1.dylib ~/.konan/kotlin-native-prebuilt-macos-aarch64-1.5.30/konan/nativelib/libllvmstubs.dylib

注:如果您有以下所有文件夹,请确保执行前面的所有命令

最后,执行以下命令(替换应用程序存储库的路径):

.../android-project-repo/gradlew --stop

最新更新