常用的编译器(不限制编程语言、不限制平台)

2023-11-09

在提到这个问题之前我们应该了解编译器是什么?
简单来说:编译器就是将一种语言(通常为高级语言)翻译为另一种语言(通常为低级语言
的程序。一个现代编译器的主要流程有:源代码——>预处理器——>编译器——>目标代码——>链接器——>可执行程序。

几种常见的编译器:

1.Microsoft Visual C++

Microsoft Visual C++是微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言,基于Windows操作系统。VC++集成了便利的除错工具,特别是集成了Windows视窗操作系统英语程序接口(Windows API)、三维动画DirectX API,Microsoft.NET框架。目前最新版本是Microsoft Visual C++2017。它以拥有语法高亮,IntelliSense(自动完成功能)以及高级除错功能而著称。

2.GNU Compiler Collection(GCC)

GNU编译器套件包括C、C++、Objective-C、Java|、Ada和Go语言的前端,也包括这些语言的库,GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。GCC原本是GNU操作系统的官方编译器,现在被大多数类Unix操作系统(如Linux、BSD、Mac OS等)采纳为标准的编译器。GCC同样适用于微软的Windows操作系统。在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称(这里就不多说了,下次整理出来了单发一篇)。

3.Clang

Clang是一个C语言、C++、Objective-C语言的轻量级编译器。源代码发布于BSD协议下。Clang将支持其普通lambda表达式、返回类型的简单处理以及更好的处理constexpr关键字。
Clang项目包括Clang前端和Clang静态分析器等。Clang的在出生之前就已经明确了他的使命——干掉该死的GCC。有了LLVM+Clang,从此,苹果的开发面貌焕然一新。从此摆脱了GCC的限制。客观的说GCC是有很多的优点,例如支持多平台,很流行,基于C无需C++编译器即可编译。这些优点到苹果那就可能是缺点了,苹果需要的是——快。这正是Clang的优点,除了快,它还有与GCC兼容,内存占用小,诊断信息可读性强,易扩展,易于IDE集成等等优点。有个测试数据:Clang编译Objective-C代码时速度为GCC的3倍。

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

常用的编译器(不限制编程语言、不限制平台) 的相关文章

  • 如何防止 CMake 在构建时(而不是安装时)为共享库创建符号链接?

    我正在使用 CMake 在 Linux 上使用 Bullet3 构建一个项目 在构建整个解决方案时 它会构建附加了 SOVERSION 的 Bullet 输出库 并创建一个不带版本的符号链接 对于我的特定场景 我不喜欢这种行为 并且我不想编
  • 如何从 Linux 命令行打开 Sublime Text 2 文件到选项卡,而不是新窗口

    我有 ST2 设置 这样我就可以执行 sublime file txt 它将在 ST2 窗口中打开 但是我怎样才能让它在当前打开的窗口的新选项卡中打开呢 尝试 Sublime 命令行帮助 subl 帮助 Sublime Text 2 内部版
  • 在 shell 脚本中将脚本目录更改为用户的 homedir

    在我的 bash 脚本中 我需要将当前目录更改为用户的主目录 如果我想更改为用户的foo主目录 从命令行我可以执行以下操作 cd foo 效果很好 但是当我从script它告诉我 bar sh line 4 cd foo No such f
  • 检查 Linux 中给定进程的打开 FD 限制

    我最近有一个 Linux 进程 泄露 了文件描述符 它打开了文件描述符 但没有正确关闭其中一些文件描述符 如果我对此进行监控 我就可以提前得知该过程已达到其极限 有没有一种很好的 Bash 或 Python 方法来检查 Ubuntu Lin
  • 无法使用 tar -cvpzf 解压完整目录

    把我的头敲在这上面 I used tar cvpzf file tar gz压缩一个完整的目录 我将文件移动到另一台服务器 并尝试解压缩复制存档的目录 无法使其发挥作用 bash 3 2 tar xvpzf news tar gz tar
  • 警告构建使用导出符号的内核模块

    我有两个内核模块 例如 modA 和 modB modA 导出一个符号EXPORT SYMBOL symA modB 使用它 我有标题modA h对于modA extern void symA int param and in modB c
  • 在linux中使用setcap [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 要将 cap net raw 功能添加到 例如 bin ping 我们使用以下命令 setcap cap net raw ep bin ping ep
  • 如何更改Linux服务器中的MySQL表名不区分大小写?

    我正在开发一个旧网站 该网站曾经托管在 Apple 服务器上 当它迁移到新的 Linux 服务器时 它停止工作 我很确定这是因为 php 脚本中使用的所有 MySQL 查询对于表名都有不同的大小写组合 我不知道为什么原始开发人员在创建表名或
  • Mongo:无法连接到服务器 127.0.0.1:27017 位于 src/mongo/shell/mongo.js:145

    当我尝试在 ubuntu 中的 shell 中运行 mongo 或打开 rockmongo 时 我看到以下错误 couldn t connect to server 127 0 0 1 27017 at src mongo shell mo
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • 使用inotify监控文件

    我正在使用 inotify 来监视本地文件 例如使用 root temp inotify add watch fd root temp mask 删除该文件后 程序将被阻止read fd buf bufSize 功能 即使我创建一个新的 r
  • 容器上的“container_memory_working_set_bytes”指标和 OOM-killer 之间有什么关系?

    我试图找出并理解 OOM killer 如何在容器上工作 为了弄清楚这一点 我读了很多文章 发现 OOM killer 会根据oom score And oom score是由oom score adj以及该进程的内存使用情况 有两个指标c
  • 如何在 .zip 文件中使用 grep

    有 3 个文件 a csv b csv c csv 压缩为 abh zip 现在可以在 abh zip 上执行 grep 命令 是否有任何通配符 仅对里面的 c csv 文件运行 grep压缩 如果你有zipgrep 据我所知 它是随zip
  • 分割 tar.bz2 文件并单独提取每个文件

    我可以将一个大的 tar bz2 文件分割成几个较小的文件并在 Ubuntu 中单独提取这些小 tar bz2 文件吗 Thanks 我认为这不容易实现 A tar bz2是单个流 它没有像这样的索引zip这将允许跳到存档中特定文件的开头
  • 如何在Linux中获取带有图标的活动应用程序

    我想找到一种方法获取活动应用程序的列表及其名称和图标 实际上 我正在使用此命令来获取所有活动进程 wmctrl lp 示例输出 0x03800002 0 3293 user notebook XdndCollectionWindowImp
  • 仅为我自己禁用和重新启用地址空间布局随机化

    我想在我的系统 Ubuntu Gnu Linux 2 6 32 41 server 上禁用地址空间布局随机化 ASLR 但是 如果我使用 sysctl w kernel randomize va space 0 我认为这一更改将影响系统上的
  • 如何让 VSCode 在当前工作区中打开?

    我在 Linux 上使用 VSCode 我有多个 Linux 工作区 当我在新工作区中的 VSCode 中打开新文件时 它会在原始工作区中的 VSCode 中打开一个新选项卡 而不是在当前工作区中打开 VSCode 的新实例 这确实是令人讨
  • 使用多个 NIC 广播 UDP 数据包

    我正在 Linux 中为相机控制器构建嵌入式系统 非实时 我在让网络做我想做的事情时遇到问题 该系统有 3 个 NIC 1 个 100base T 和 2 个千兆端口 我将较慢的连接到相机 这就是它支持的全部 而较快的连接是与其他机器的点对
  • 是否可以为我的 Linux 函数复制命令的制表符补全?

    假设我有一个名为的 bash shell 函数magic 我想定义一个制表符补全功能 magic这将允许magic搭载任何给定命令的选项卡完成功能 如果可用 换句话说 我想要magic能够做这样的事情 magic git
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这

随机推荐

  • 机器学习算法——混淆矩阵(Confusion Matrix)之鸢尾花实例

    一 理论 什么是混淆矩阵 其实就是把所有类别的预测结果与真实结果按类别放置到了同一个表里 在这个表里我们可以清楚地看到每个类别正确识别的数量和错误识别的数量 混淆矩阵在什么情况下最好呢 答案是类别不平衡时 混淆矩阵是除了ROC曲线和AUC之
  • chatGPT高考作文

    百花齐放 春满人间 吹灭别人的灯 并不会让自己更加光明 阻挡别人的路 也不会让自己行得更远 这是一句古老而智慧的话语 告诉我们要尊重和包容他人 要与人和睦相处 要共同进步 同样的道理 也适用于文化的交流和发展 文化是一个民族的灵魂 是一个国
  • 华为OD机试真题-不爱施肥的小布

    题目描述 某农场主管理了一大片果园 fields i 表示不同果林的面积 单位 m 2 现在要为所有的果林施肥且必须在n天之内完成 否则影响收成 小布是果林的工作人员 他每次选择一片果林进行施肥 且一片果林施肥完后当天不再进行施肥作业 假设
  • C++复合类型

    1 数组 数组声明应该指出元素类型 数组名和元素个数 数组的初始化需要遵循以下规则 a 只有定义数组时才能使用初始化 此后就不能使用了 也不能将一个数组赋给另一个数组 int narray1 4 1 2 3 4 int narray2 4
  • 操作系统 实验二 银行家算法

    题目描述 已知进程 P0 P1 P2 P3 P4 有三类系统资源A B C的数量分别为10 5 7 在T0时刻的资源分配情况如下图所示 1 若进程P1请求资源 发出请求向量Request1 1 0 2 编写程序用银行家算法判断系统能否将资源
  • 【javascript-基础小练习】角度转弧度,已知角度90,转成弧度?

    角转弧度的公式为 jiao 180 pai hu 假设pai的值为 3 14
  • 数据库的事务及变量声明方法

    事务 简单来说事务就是为了保持数据一致性的一种手段 在事务中的sql语句作为一个整体一起向系统提交 要么都执行 要么都不执行 可以回滚到原来的状态 事务的语法 开始事务 begin tran 或者transaction 提交事务 commi
  • Spring为什么不推荐你使用@Autowired ?

    Spring为什么不推荐你使用 Autowired 我们总能发现当使用IDEA写代码的时候 Autowired注解会报黄 我们把鼠标悬停在上面 可以看到这个如下图所示的警告信息 当我们按住alt 回车键 idea就会帮我们修改成这样 我向来
  • 微服务架构

    3 注册中心与服务发现 前言 1 服务发现基础知识 1 1 注册中心与服务发现的联系 1 2 使用 DNS 与负载均衡器发现服务的弊端 1 3 云中的服务发现应该具备的特点 1 4 服务发现架构 1 5 服务治理的概念 1 6 服务注册的概
  • Linux服务器(centos7)中Word转换PDF,文档出现中文乱码或方格【亲测可用,已解决】

    提示 在centos服务器使用aspose word转换word文件为pdf的时候只有中文乱码或则方格 但是在win服务器上使用可以正常转换 本次文章主要解决字体缺失问题 目录 前言 一 在linux服务器上生成的pdf都是这种格式的 二
  • 信号和槽函数的扩展

    信号和槽函数的扩展 一个信号连接多个槽函数 一个槽函数连接多个信号 信号连接信号 一个信号可以连接多个槽函数 发送一个信号有多个处理动作 需要写多个connect 连接 槽函数的执行顺序和信号的发射顺序相同 QT5中 信号的接收者可以是一个
  • C++primer总结

    目录 第一章 数据处理 2 整形 2 第二章 复合类型 3 数组 3 字符串 4 枚举 5 指针 5 第三章 函数的使用 6 内联函数 6 默认参数 6 函数的重载 7 函数的模板 7 第四章 内存模型和名称空间 7 文件的单独存放 7 变
  • Transaction rolled back because it has been marked as rollback-only

    http hsyd iteye com blog 586772 错误信息 Transaction rolled back because it has been marked as rollback only 原因 事务提交多次 检查代码
  • 小程序无法获取头像和昵称(已解决)

    从基础库 2 21 2 开始支持 当小程序需要让用户完善个人资料时 可以通过微信提供的头像昵称填写能力快速完善 根据相关法律法规 为确保信息安全 由用户上传的图片 昵称等信息微信侧将进行安全检测 组件从基础库2 24 4版本起 已接入内容安
  • Python+Selenium+phantomjs实现网页模拟登录和截图

    Python Selenium phantomjs实现网页模拟登录和截图 本文全部操作均在windows环境下 安装 Python Python是一种跨平台的计算机程序设计语言 它可以运行在Windows Mac和各种Linux Unix系
  • C++ Primer 学习笔记 第十章 泛型算法

    标准库容器很小 并未给每个容器添加大量功能 而是提供了一组算法 这些算法大多数都独立于任何特定的容器 这些算法是通用的 或者说是泛型的 generic 可用于不同类型容器和元素 大多数泛型算法定义在头文件algorithm中 头文件numb
  • Linux 用户管理

    一 useradd命令 创建普通用户的 语法 c lt 备注 gt 加上备注文字 备注文字会保存在passwd的备注栏位中 d lt 登入目录 gt 指定用户登入时的启始目录 D 变更预设值 e lt 有效期限 gt 指定帐号的有效期限 f
  • ETL工具——kettle实现简单的数据迁移

    文章目录 1 Kettle概念 2 安装与启动 3 常用组件 4 具体案例 4 1 数据库连接 3 2 sql脚本 3 3 表输入 3 4 字段选择 3 5 表输出 1 Kettle概念 Kettle是一款国外开源的ETL工具 纯java编
  • pnPm——比npm&yarn更胜一筹的包管理器

    官网 Fast disk space efficient package manager pnpm 安装 在 POSIX 系统上 即使没有安装 Node js 也可以使用以下脚本安装 pnpm curl fsSL https get pnp
  • 常用的编译器(不限制编程语言、不限制平台)

    在提到这个问题之前我们应该了解编译器是什么 简单来说 编译器就是将一种语言 通常为高级语言 翻译为另一种语言 通常为低级语言 的程序 一个现代编译器的主要流程有 源代码 gt 预处理器 gt 编译器 gt 目标代码 gt 链接器 gt 可执