Clang+mingw注意事项

本文介绍了如何解决在Windows环境下使用Clang编译器时遇到的‘stdio.h’文件未找到的问题。提供了两种解决方法:一是安装MinGW并指定其头文件路径;二是利用Visual Studio的工具链。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Clang:fatal error:'stdio.h' file not found的解决方法

转载 2015-03-06 09:41:46
标签: clang 编译器

    在我下载安装了 LLVM-3.6.0-win32.exe之后,我将LLVM的bin目录加入到了系统PATH中,然而在Windows CommandLine上执行命令编译一个简单的hello.c程序时,出现了如下错误:


错误信息

   第一次安装使用Clang,多亏神奇的google,我在这里找到了解决方案:

   http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-November/033724.html  

   Clang doesn't shipwith its own complete toolchain.  It alwaysintegrates with whatever standard C/C++ libs and headers the nativeplatform uses.

   On Windows, there are twotoolchains worth mentioning: the Visual C++ toolchain, and theMingw toolchain.

     If youwant to build using make, etc, then you probably want to installmingw.Then you can build with something like "clang--target=i686-pc-mingw32" or "clang--target=x86_64-pc-mingw32"and it should pick the rightheaders for you.

   就是说Clang自身没有配备自己完整的工具链,它通常使用本地平台使用的任意的标准的C/C++库和头文件。在Windows平台上,VisualC++和Mingw是两个比较常用的工具链。那么解决方案就来了:

  第一种方法,使用MinGW的头文件

  安装mingw32,将它的bin目录加入到系统PATH中,我的MingGW的bin目录为:D:\MinGW\bin;然后在使用Clang编译时,指定--target=i686-pc-mingw32就可以进行正常编译了。

使用MinGW

  第二种方法,使用MSVC

   我的电脑上安装了MicrosoftVisual Studio2013,那么我就可以在Clang编译时,指定--target=i686-pc-vs2013就可以正常编译了。

使用VisualStudio 2013

--------------------------------------------------------------------------------------------------------------

windows下clang的安装与使用

我本意是想在windows下学习下C++11,而结果是我的Visual Studio 2012不完全支持,而我又懒得去安装2013/2015,太大了。公司运维也不允许我去下载- -,然后就想能不能在windows环境下搞个gcc玩,然后我又知乎了一把,大意的意见是clang把gcc甩了好远,所以我就决定安装clang环境来学习一下,过程中还是遇了几个坑…

 

-----------------------------------------------------------------------------------------------

下载最新的clang版本,地址:http://www.llvm.org/releases/download.html#3.7.0

然后编写测试用的c代码,保存为demo1.c

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Hello World!");    

    return 0;
}

使用Win + R,切换到demo1.c的目录下,然后执行clang --verbose demo1.c会遇到错误

找不到stdio.h文件,之后我在网上搜索了好久,比如这一篇文章

http://zanedp.blogspot.com/2014/01/clang-cant-find-stdioh-etc.html

我按照文章提示的步骤进行安装,最后发现遇到这样的错误:

ld.exe: unrecognised emulation mode: i386pep

Supported emulations: i386pe

 

这个问题很头疼,google出来的结果很多,却几乎没什么头绪,最后我在一个邮件列表中找到了答案

http://comments.gmane.org/gmane.comp.lib.boost.devel/262947

缺少stdio.h,下载mingw没有问题,问题是我使用的不是64位的!

然后我搜索关键字“mingw 64”,总算让我找到了答案,下载地址:http://mingw-w64.org/doku.php/download

注意CPU架构选择x86_64,原因就是clang也使用的是该架构编译的

安装成功后,查看gcc的相关信息(需要把gcc安装目录的bin加入到环境变量)

 

如果还编译不通过(我遇到了),关闭当前的dos窗口,然后重新来一遍就可以了

main.cpp的源码:

#include <iostream>
#include <vector>
 
int main()
{
  std::vector<int> vect {1, 2, 3, 4, 5};
  for(auto& el : vect)
    std::cout << " - " << el << std::endl;
  
  return 0;
}

剩下的就请同学们自己愉快的玩耍吧…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值