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

Has*_*dad 4 macos kotlin apple-m1

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

我有一个自定义 Gradle 任务来构建插件并将其发布到我的本地计算机,在更新到 Ventura 之前,该任务曾经完美地工作,但现在我得到的只是 kotlin 编译器到达 linkReleaseFrameworkIos 任务时出现的构建错误:

Compilation failed: Could not initialize class llvm.llvm
Run Code Online (Sandbox Code Playgroud)
  • 源文件:
  • 编译器版本信息:Konan:1.5.30 / Kotlin:1.5.30
  • 输出类型:框架

我尝试使用不同的 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
Run Code Online (Sandbox Code Playgroud)

和:

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)
Run Code Online (Sandbox Code Playgroud)

和:

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"]
Run Code Online (Sandbox Code Playgroud)

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

关于可能导致此类问题的任何建议?

Ala*_*bak 5

我通过在终端中执行下一个命令解决了这个问题,请确保将命令中的版本更改为您的 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
Run Code Online (Sandbox Code Playgroud)

文件夹路径也可能包含拱门“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
Run Code Online (Sandbox Code Playgroud)

或拱门“aarch64”

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
Run Code Online (Sandbox Code Playgroud)

PS 如果您拥有所有这些文件夹,请确保执行所有前面的命令

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

.../android-project-repo/gradlew --stop
Run Code Online (Sandbox Code Playgroud)