如题,我注意到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