【问题标题】:Unable to compile llvm pass on Windows using Visual studio无法使用 Visual Studio 在 Windows 上编译 llvm pass
【发布时间】:2021-10-21 13:31:22
【问题描述】:

我正在学习如何在 Windows 上使用 llvm 工具链。 我使用以下 cmake 命令编译并安装了 llvm

cmake -S llvm -B build -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_USE_LINKER=lld -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_INSTALL_PREFIX="C:\llvm" -Thost=x64

c:\llvm 中安装llvm 的构建文件夹中创建的解决方案中运行INSTALL 项目。 为了测试我的 llvm 安装,我创建了一个新的 Visual Studio 项目并在项目根目录中放置了一个 Directory.build.props 文件,其中包含以下内容:

<Project>
  <PropertyGroup>
    <LLVMInstallDir>C:\llvm</LLVMInstallDir>
    <LLVMToolsVersion>14.0.0</LLVMToolsVersion>
  </PropertyGroup>
</Project>

我在项目设置中将项目工具链设置为LLVM (clang-cl),成功编译了一个hello world程序。
现在我想将 llvm 用于它的预期用途并玩一些通行证。所以我下载了https://github.com/tsarpaul/llvm-string-obfuscator
运行cmake -Bbuild -DLLVM_DIR=C:\llvm\lib\cmake\llvm\.\build 中生成了一个Visual Studio 解决方案。
到目前为止,我坚持得很好。这类似于编译 llvm 本身所需的步骤。
但是在生成的解决方案中运行 BUILD_ALL 项目给了我 105 个链接器错误。

我已将整个错误输出粘贴到此处:https://pastebin.com/TAizbAEi
我感觉 C:\llvm\lib 中所需的库对 Visual Studio 不可见。但我不知道如何进行。谁能指出我如何正确使用 llvm 和 Visual Studio 的正确方向?

【问题讨论】:

    标签: visual-studio cmake clang llvm


    【解决方案1】:

    通过添加到cmake文件中解决:

    llvm_map_components_to_libnames(llvm_libs core)
    target_link_libraries(LLVMStringObfuscator ${llvm_libs})
    

    现在 dll 构建。 我在使用opt.exe时仍然遇到问题

    PS C:\Users\Administrator\source\repos> C:\llvm\bin\opt.exe -load-pass-plugin=.\11philip22\llvm-string-obfuscator\build\StringObfuscator\Release\LLVMStringObfuscator.dll -passes="string-obfuscator-pass"
    C:\llvm\bin\opt.exe: .\11philip22\llvm-string-obfuscator\build\StringObfuscator\Release\LLVMStringObfuscator.dll:1:1: error: expected top-level entity
    MZÉ           ╕       @                                   ║ ┤  ═!╕L═!This program cannot be run in DOS mode.
    

    但这对于另一个线程来说是一个新问题:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多