我的环境:
(posix)
MinGW-W64和LLVM都被添加到我的路径中。
当我尝试用clang++编译Hello时,它会大喊大叫:
clang++: warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-found]
test1.cpp:4:10: fatal error: 'iostream' file not found
#include <iostream>
^~~~~~~~~~
1 error generated.当我添加-v时,它不会搜索g++ stdlib:
clang version 12.0.0
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: D:\.llvm12\bin
clang++: warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-found]
clang++: warning: argument unused during compilation: '-stdlib=libc++' [-Wunused-command-line-argument]
"D:\\.llvm12\\bin\\clang++.exe" -cc1 -triple x86_64-pc-windows-msvc19.11.0 -emit-obj -mrelax-all -mincremental-linker-compatible --mrelax-relocations -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test1.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -v -resource-dir "D:\\.llvm12\\lib\\clang\\12.0.0" -internal-isystem "D:\\.llvm12\\lib\\clang\\12.0.0\\include" -internal-isystem "C:/Program Files/Microsoft Visual Studio 10.0/VC/include" -internal-isystem "C:/Program Files/Microsoft Visual Studio 9.0/VC/include" -internal-isystem "C:/Program Files/Microsoft Visual Studio 9.0/VC/PlatformSDK/Include" -internal-isystem "C:/Program Files/Microsoft Visual Studio 8/VC/include" -internal-isystem "C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include" -fdeprecated-macro -fdebug-compilation-dir "D:\\.tmp" -ferror-limit 19 -fmessage-length=120 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.11 -std=c++14 -fdelayed-template-parsing -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -o "C:\\Users\\lenovo\\AppData\\Local\\Temp\\test1-4517aa.o" -x c++ test1.cpp
clang -cc1 version 12.0.0 based upon LLVM 12.0.0 default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 10.0/VC/include"
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 9.0/VC/include"
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 9.0/VC/PlatformSDK/Include"
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 8/VC/include"
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include"
#include "..." search starts here:
#include <...> search starts here:
D:\.llvm12\lib\clang\12.0.0\include
End of search list.
test1.cpp:4:10: fatal error: 'iostream' file not found
#include <iostream>
^~~~~~~~~~
1 error generated.我是否安装了LLVM或MinGW-W64的错误版本?
编辑1:
我试图使用--target=x86_64-w64-windows-gnu编译一段明显错误的代码:
// test3.cpp
#include <iostream>
int main() {
cout << "\n";
return 0;
}然后,它给了我一个令人满意的答复:
test3.cpp:4:2: error: use of undeclared identifier 'cout'; did you mean 'std::cout'?
cout << "\n";
^~~~
std::cout
D:\.mingw64\lib\gcc\x86_64-w64-mingw32\7.3.0\include\c++\iostream:61:18: note: 'std::cout' declared here
extern ostream cout; /// Linked to standard output
^
1 error generated.我想将--target=x86_64-w64-windows-gnu添加到我的默认设置中。我该怎么做呢?
发布于 2021-06-19 08:37:07
在Windows上,Clang在默认情况下以与MSVC兼容的模式运行,使用其标准库和各种标头.
要使它在MinGW兼容模式下运行,添加以下标志:--target=x86_64-w64-windows-gnu。或者,如果为x32位而不是x64编译,则将x86_64替换为i686。
或者,卸载您的Clang (以及MinGW )并从MSYS2重新安装它们。默认情况下,他们的Clang构建使用此标志。另外,他们提供的GCC的版本比你的更近(10.3比7.3)。
而且,从-stdlib=libc++的角度来看,您正在尝试在Windows上使用libc++。我不认为官方的Clang构建为Windows提供了它,但是MSYS2的人提供了。
https://stackoverflow.com/questions/68045039
复制相似问题