如题,我注意到Clang的Manual上有一句:
Clang has experimental support for targeting “Cygming” (Cygwin / MinGW) platforms.
确实,从官网上下载的pre-built的Windows Clang也需要MinGW才能编译依赖stdio.h的程序,否则会提示头文件不存在。
但是我也注意到有人说通过MSVC编译的Clang可以直接生成使用标准C库的程序,不需要安装MinGW,但需要安装Visual Studio.
这些现象背后的原理是什么?Clang在其中充当一个什么样的作用?为什么会出现这种现象?
新手,问题可能显得幼稚,见谅,谢谢。(已STFW)
因为在这个目录
C:\Program Files\LLVM\lib\clang\5.0.0\include下,标准C的头文件一个都没有,所以对应的lib文件也就没有了,以及对应的DLL也没有。这个
Pre-Built版本,只有编译器在里面,不带有任何STD的东东。使用
VS调用Clang的编译使用的是
VC目录提供的标准C的H、LIB,最终指向msvcrXX.dll(XX代表你当前的VS版本)、ucrtbase.dll,如果是VS 2015或以上,那还会带一堆api-ms-win-core、api-ms-win-crt使用
MinGW调用CLang编译(也就是将环境变量
INCLUDE目录指向到MinGW的include目录),使用的是
MinGW提供的标准C的H、LIB,最终指向的是libstdc++-6.dll只要调用
标准C,不静态编译,那附送一个DLL是必须的。而静态编译就附送一个大礼包
EXE