在Windows上使用clang编译器

2023-10-31

在Stackoverflow等网站上,经常出现各种编译器的对比的结果,其中clang是很常见的,那么,怎样在Windows上使用clang呢,没那么直观。

直接去llvm官网上下载clang的发行包,解压,到bin下面,看到应该是我们想要的工具,最重要的,clang.exe clang++.exe。

直接写个小HelloWorld,并不能编译:

fatal error: 'stdio.h' file not found

或者其他类似的找不到头文件的错误。


在下载解压的包里,搜索文件‘stdio.h’或‘iostream’,居然搜不到?!

是的,根本没有。所以在windows上,clang和所谓的gcc还是非常不同的。

gcc(g++)基于mingw,提供自己的一整套C++标准库和Windows SDK的头文件和库。

而clang只是一个编译器前端,在Windows上使用的头文件、链接器等使用的是Visual C++里的!


所以,要想在Windows上正常使用clang,应该想办法把Visual Studio的VC++里的头文件、库和工具暴露出来。


先到开始按钮里,打开那个叫什么“visual studio 工具命令行”,然后在这个cmd里用clang编译,没问题。

实际上,上一步运行的是在Visual C++文件夹下的vcvarsall.bat。


所以我们就知道了,这样:

把LLVM的bin文件夹LLVM\bin\填到PATH里,这个PATH下有clang.exe;

把Visual C++文件夹Microsoft Visual Studio 14.0\VC\填到PATH里,这个PATH下有vcvarsall.bat

打开cmd;

输入:vcvarsall.bat,回车;

使用clang编译程序。


这里编出来是32位的,如果想编出64位的,需要将vcvarsall.bat那一步改为:

vcvarsall.bat AMD64,回车。


就这样,应该没啥问题。


建议使用ConEmu代替自带的cmd。很好用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Windows上使用clang编译器 的相关文章

随机推荐

  • 无涯的技术与成长的迷茫

    记得上大学之前 老师会为我们规划好一切 什么时候要高考 在什么时间点应该掌握哪些技能 每天要学什么 作业是什么 什么时候要放假了 一切都清晰明了 忙碌 但也充实 而上了大学后 感受最深的一点就是迷茫 没有方向 再也没有人为自己规划好一个明确
  • 【Spring从入门到实战】第 6 讲:SpringBoot 的事务管理

    本文已收录于专栏 Spring从入门到实战 专栏前言 大家好 我是执梗 本专栏将从Spring入门开始讲起 详细讲解各类配置的使用以及原因 到使用SpringBoot进行开发实战 旨在记录学习生活的同时也希望能帮到大家 如果对您能有所帮助
  • Google Maven Replacer Plugin插件详解

    在Maven项目的构建过程中 对于Maven标准预定义变量 或者
  • Android Studio App开发入门之图形定制Drawable的讲解及实战(附源码 超详细必看)

    运行有问题或需要源码数据集请点赞关注收藏后评论区留言 图形Drawable Android把所有能够显示的图形都抽象为Drawable类 这里的图形不止是图片 还包括色块 画板 背景等等 包含图片在内的图形文件放在res的目录的各个draw
  • 本地改代码服务器同时修改,sync_web: 将本地的修改通过ftp一键同步到服务器上 ,非常适合维护多个网站并且经常改动代码的情况...

    sync web 将本地的修改通过ftp一键同步到服务器上 非常适合维护多个网站并且经常改动代码的情况 监测文件变动依赖于svn或git author hellstar 在ksc的sync web项目基础上改进 需要安装python2 7环
  • c++11之std::enable_shared_from_this入门

    一 std enable shared from this
  • MySQL之rank() over(order by)

    一 准备工作 创建一个表palyers CREATE TABLE players pid int 2 NOT NULL AUTO INCREMENT name varchar 50 NOT NULL age int 2 NOT NULL P
  • JSON、AJAX简单介绍

    链接 https pan baidu com s 1CS9eQJB YyXorHR7k4P Ww 提取码 nkt2 JSON JavaScript 对象表示法 JavaScript Object Notation JSON 是存储和交换文本
  • 偷偷爆料下国内比较大型的 IT 软件外包公司名单(2023 最新版!)

    点击关注公众号 Java干货及时送达 来源 网络 1 软件外包公司名单 2 如何区分是否是外包公司 3 外包公司真是无一是处吗 4 软件外包的几种形式 5 哪些情况可选择外包 根据网上的资料 整理出来的一份国内软件外包公司的名单 找工作的同
  • RS485收发切换多0x00数据影响bootload升级程序

    串口升级使用RS485接口 RS485收发切换多0x00数据 部分有问题电路板在app程序中输入调试指令有响应 app通过ULINK下载 而使用ymodem在bootloader中升级程序失败 通过printf打印捕捉到数据包头多0x00数
  • 【机器学习】支持向量机SVM - 对SVM与核函数的理解及sklearn参数详解

    支持向量机是在深度学习流行开来之前 性能表现最好的一种机器学习方法 在看这篇blog之前 默认读者已经有了对支持向量机的基本概念的认识 一 支持向量机的进一步理解 支持向量机的优化目标在逻辑回归优化目标基础上进一步产生的 具体优化目标不说了
  • web标准化设计:常用的CSS命名规则

    头 header 内容 content container 尾 footer 导航 nav 侧栏 sidebar 栏目 column 页面外围控制整体布局宽度 wrapper 左右中 left right center 登录条 loginb
  • (二) three.js 导入模块

    导入模块 目录结构 示例 First html 导入three js 的模块 script 标签导入模块 红色框是导入three js 下面绿色框就不用加type module Import导入模块 同样注意红色框和绿色框的对应关系
  • es6面试题

    1 es5和es6的区别 说一下你所知道的es6 ECMAScript5 即ES5 是ECMAScript的第五次修订 于2009年完成标准化ECMAScript6 即ES6 是ECMAScript的第六次修订 于2015年完成 也称ES2
  • 常见的通讯协议总结(USART、IIC、SPI、485、CAN)

    目录 一 通讯的基本概念 1 串行通讯 2 并行通讯 3 串行通讯与并行通讯对比 4 传输模式 单工 半双工 全双工 二 USART 串口通讯 1 物理层 2 协议层 1 波特率 2 起始和停止信号 3 有效数据 4 数据校验 2 异步串行
  • 使用CSMA/CD协议一个计算题

    题干 首先计算一下A这个以太网所容许的最短的帧它的发送帧的长度时间为 8 前同步码为8 64 最短帧长 8 单位转换b到B 576比特 有关于单位转换 B是Byte的缩写 B就是Byte 也就是字节 Byte b是bit的缩写 b就是bit
  • 理解高内聚低耦合

    低耦合 耦合就是元素与元素之间的连接 感知和依赖量度 这里说的元素即是功能 对象 系统 子系统 模块 例如 现在有方法A和方法B 我们在A元素去调用B元素 当B元素有问题或者不存在的时候 A元素就不能正常的工作 那么就说元素A和元素B耦合
  • 【数据结构】实验六:图论

    文章目录 7 1 邻接矩阵表示法创建无向图 参考代码 代码解析 7 2 邻接表创建无向图 参考代码 代码解析 7 3 图深度优先遍历 参考代码 代码解析 7 4 单源最短路径 参考代码 代码解析 7 5 列出连通集 参考代码 代码解析 7
  • 在Servlet中使用开源fileupload包实现文件上传功能

    当我们在 HTML 表单中选择本地文件之后点击 提交 按钮则会将文件上传到服务器中 此时该 HTTP 请求正文的数据类型就是 multipart form data 型的 而在 Servlet 技术中 该 HTTP 请求会被 Servlet
  • 在Windows上使用clang编译器

    在Stackoverflow等网站上 经常出现各种编译器的对比的结果 其中clang是很常见的 那么 怎样在Windows上使用clang呢 没那么直观 直接去llvm官网上下载clang的发行包 解压 到bin下面 看到应该是我们想要的工