解决方案:inkwell/llvm-sys 无法在 windows 上编译

问题描述 投票:0回答:1

我想将其作为解决方案而不是问题发布,因为我似乎没有很多人真正解释如何解决这个问题。

我正在与 LLVM 合作,使用 inkwell 在 Rust 中构建一个小型编译器(inkwell 使用 llvm-sys,所以它也与之相关)。

首先,在 llvm 的 github 上编译的 Windows 二进制文件不包括在 llvm 之上构建所需的工具。另外,在从源代码编译 llvm 后,我遇到了无法编译所述板条箱的问题,有不同的错误说明比如“Files/LLVM/Target.h 未找到!”等..

首先是一些对某些人有用的解决方案:

  1. 清理项目(
    cargo clean
    )
  2. 将“/LLVM/bin”添加到环境路径。
  3. 如果您使用的是inkwell,您仍然需要在
    Cargo.toml
    中引用适当的llvm-sys版本:
llvm-sys = { version = "160.1.4"} # For LLVM 16.x

在帖子下寻找实际解决方案

rust llvm llvm-ir
1个回答
0
投票

事实证明 llvm-sys 不理解 LLVM 路径中的空格。 所以整个解决方案将其安装到没有空格的目录中:

PS。 (删除 LLVM,如果你已经有的话,-> 安装 cmake 和 Visual Studio(我用的是 2022))

PS2。 (一切都是通过 VS 开发者控制台完成的)

  1. 从 Visual Studio 安装程序中,您需要确保有
    Visual C++ ATL v141-143
    C++ ATL for latest v141-143
  2. git 克隆所需版本的 llvm 使用:
    git clone https://github.com/llvm/llvm-project.git --branch release/16.x
    (将发布版本更改为您需要的版本)
  3. cd llvm-project
    ->
    cd llvm
    ->
    mkdir build
    ->
    cd build
  4. cmake .. "-DCMAKE_INSTALL_PREFIX=C:\LLVM\"
    (如果需要,可以添加更多 cmake 标志)
  5. 配置完成后(不要退出构建目录):
    cmake --build . --target install --config Release
  6. 等到构建完全完成,然后检查
    C:\LLVM\bin
    是否在您的 PATH 中,如果没有添加它。 完成,这应该允许构建 llvm-sys/inkwell。
© www.soinside.com 2019 - 2024. All rights reserved.