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 路径中的空格(LLVM 的默认安装路径是

C:\Program Files\LLVM\
)。 所以整个解决方案将其安装到没有空格的目录中:

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

(一切都是通过 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
    (将发布版本更改为您需要的版本,它必须具有
    release/<major>.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.