【问题标题】:Clang on Windows with MinGW在 Windows 上使用 MinGW 进行 Clang
【发布时间】:2019-11-27 01:54:26
【问题描述】:

我同时安装了 MinGW gcc 和 Clang clang 并通过 chocolatey 添加到路径中,两者都可以在命令行上找到。但是,当我尝试将clanggcc 一起使用时,clang 似乎不知道在标准库中哪里可以找到头文件(例如iostream),返回以下错误:

clang++ -v main.cpp -o main.exe -std=c++14 -target x86_64-mingw64
clang version 9.0.0 (tags/RELEASE_900/final)
Target: x86_64-unknown-windows-gnu
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin
(SKIP)
ignoring nonexistent directory "(nonexistent directories)"
#include "..." search starts here:
#include <...> search starts here:
C:\Program Files\LLVM\lib\clang\9.0.0\include
End of search list.
main.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^~~~~~~~~~
1 error generated.

shell returned 1

我已将gccclang 添加到路径中,以及包含gcc (C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0) 中包含的头文件的目录,所以我不明白为什么clang 不是在正确的位置寻找头文件。我该如何解决这个问题?这并不是真正必要的,但是可以更改clang 的默认目标吗? clang 当前的 Windows 10 默认值为 msvc,但我宁愿不使用它。

【问题讨论】:

  • clang 和 gcc 是不同的编译器,“将 clang 与 gcc 一起使用”是什么意思?
  • 等等,我想我可以使用 clang 作为 gcc 的前端和兼容的编译器驱动程序。这是完全不同的东西吗?

标签: windows gcc clang clang++


【解决方案1】:

解决方案: 编辑您的路径环境,将 [path to your g++ folder] 移动或添加到“C:\ProgramData\Chocolatey\bin”之前的某个位置。

原因: 使用来自 Chocolatey 或其官方网站的预构建二进制文件安装的 LLVM 缺少头文件,因此它必须使用其他编译器的头文件,例如 MSVC 或 mingw64。当你指定你的target为mingw64时,clang会通过g++.exe(可能是gcc.exe)的位置来猜测mingw头文件的路径。 Chocolatey 使用软件 shimgen 将可执行文件“映射”(我不知道是否有更合适的词)到“C:\ProgramData\Chocolatey\bin”,该文件放置在 [path to your g++ folder] 之前。因此clang会先检测该路径下的“g++.exe”,并从中推断出错误的路径。

请原谅我糟糕的英语。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 2015-05-13
    • 2017-10-05
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    相关资源
    最近更新 更多