本文基于一个需要对 C 语言家族项目进行编译、生成解决方案的开发者的视角,对编译过程中所需要的各个工具进行简要的名词解释。

GCC | LLVM 提供编译器 <-- GNU Make 根据配置文件进行编译 <-- Autoconf | CMake 自动生成编译用的配置文件

注:上面提到的各类集合和工具所能做的事情并不仅仅局限于此。

GCC | LLVM

GCCLLVM 是我们在编译 C 系项目时最常使用的两个工具链。
GCC 的全称是 GNU Compiler Collection , 即 GNU 编译器集合;
LLVM 的全称就是 LLVM (最开始的时候作为 Low Level Virtual Machine 的缩写,现在涵义已经发生了变化),现在是作为 LLVM 的编译器和工具链集合的一个总称。

gcc,全称 GNU C Compiler,是 GCC 中的 C 编译器;
g++,全称 GNU C++ Compiler,是 GCC 中的 C++ 编译器。

Clang 是 LLVM 集合前端中的 C 系编译器和工具链。Clang 兼容 GCC ,Clang 出现的时间比 GCC 晚,相比 GCC , Clang 的编译速度更快,错误提示更友好。

GNU Make

当项目的源文件数量很多,结构十分复杂时,仅仅使用编译器对项目进行编译,会是一件十分繁琐的事情,引用头文件目录,引入源文件,引入第三方静态库动态库都会十分的繁琐。

GNU Make 能够基于前面提供的编译器,选择项目中合适的源文件来生成项目所需的中间目标文件和可执行文件。开发者通过编写一个名为 makefile 的文件来指导 GNU Make 处理编译。

Autoconf | CMake

Autoconfm4 宏处理的扩展包,通过它可以生成一个脚本,这个脚本能够自动生成编译用的配置文件。AutoconfAutomake 是一对。

CMake 是一个开源的软件,开发者通过编写独立于平台和编译器的配置文件,来指导项目的编译过程。

Autoconf 中涉及的概念比较多,生成脚本的步骤比较繁琐, CMake 在使用上更为简单。

参考链接

LLVM
GCC,the GNU Compiler Collection
GNU Make
diff between gcc and g++
Programming Languages Supported by GCC
Clang
CMake
Autoconf

C/C++ 项目编译工具简介的更多相关文章

  1. golang学习笔记5 用bee工具创建项目 bee工具简介

    golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...

  2. Android 反编译工具简介

    Android 反编译工具: 所需工具:1 apktool : 用于获取资源文件 2 dex2Jar : 用于将classes.dex转化成jar文件 2 jd-gui: 将jar文件转化成java文 ...

  3. JIRA项目跟踪管理工具简介与安装

    1.什么是JIRA JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. Atlassian2002年 ...

  4. Java反编译工具CFR,Procyon简介

    Java反编译工具有很多,个人觉得使用最方便的是jd-gui,当然jad也不错,jd-gui主要提供了图形界面,操作起来很方便,但是jd-gui很久没有更新了,java 7出来很久了,jd-gui在反 ...

  5. 一个使用命令行编译Android项目的工具类

    一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...

  6. java jdk 8反编译工具JD-GUI、procyon-decompiler、luyten、crf下载使用简介

    本文对常用的反编译工具进行简单介绍 JD-GUI.procyon-decompiler.luyten.crf   反编译工具分类 JD-GUI JDK7以及之前可以使用   JD-GUI,如果版本&g ...

  7. 初识FASTBuild 一个大幅提升C/C++项目编译速度的分布式编译工具

    FASTBuild 是一款高性能.开源的构建系统,支持高度可扩展的编译,缓存和网络分发. 以上是FASTBuild官网对其产品的一句话介绍. FASTBuild 的开源地址:https://githu ...

  8. 命令行编译工具NMAKE

    简介 大家已经习惯于微软提供的功能强大的IDE,已经很少考虑手动编连项目了,所谓技多不压身,有空的时候还是随我一块了解一下命令行编译. C/C++/VC++程序员或有Unix/Linux编程经验应该很 ...

  9. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

    目录 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + ...

随机推荐

  1. Eclipse中查看JAVA源代码显示SOURCE NOT FOUND解决办法

    Problem:Java利用快捷键查看源代码显示Source not found 出现问题的原因:JDK目录下缺失src.zip文件只有javafx-src.zip src.zip文件:Java所有类 ...

  2. 同步工具类 CountDownLatch 和 CyclicBarrier

    在开发中,一些异步操作会明显加快执行速度带来更好的体验,但同时也增加了开发的复杂度,想了用好多线程,就必须从这些方面去了解 线程的 wait() notify() notifyall() 方法 线程异 ...

  3. 【10分钟学Spring】:(一)初识Spring框架

    简介 Spring是一个轻量级的企业级的Java开发框架.主要是用来替代原来更加重量级的企业级Java技术,比如EJB(Enterprise JavaBean).Java数据对象(Java Data ...

  4. 一个null,差点把系统给弄崩溃了

    今天生产上面发现了一个奇异的bug,URL上面会带上一个ID,这个ID是关联别的系统的,类似这种格式 xxx.xxx.xxx.xxx  ,是别的系统自己填写的,我们的URL会带上id=xxx.xxx. ...

  5. 原创001 | 搭上SpringBoot自动注入源码分析专车

    前言 如果这是你第二次看到师长的文章,说明你在觊觎我的美色!O(∩_∩)O哈哈~ 点赞+关注再看,养成习惯 没别的意思,就是需要你的窥屏^_^ 本系列为SpringBoot深度源码专车系列,第一篇发车 ...

  6. LVS+Keepalived-DR模式(Apache)

    Environment:4台CentOS机器 两台LVS 两台web服务器 LVS主备的操作,都需要安装ipvsadm和keepalived LVS主机操作 : 1.更改Keepalived的配置文件 ...

  7. SpringBoot日志处理之Logback

    日志处理是一个正式项目必备的功能,日志要能够根据时间.类型等要素,根据指定格式来保存指定的日志,方便我们观察程序运行情况.定位程序bug. SpringBoot中推荐使用Logback日志框架. 本节 ...

  8. 【Python成长之路】从零学GUI -- 制作智能聊天机器人

    [写在前面] 鹏哥:最近老惹小燕同学不开心,结果都没人陪我聊天了.哎,好无聊呀! 肥宅男:女朋友什么的最无聊了,还没我的图灵机器人好玩. 鹏哥:图灵?好巧,和我部门同名. [效果如下] [实现过程] ...

  9. MVVMLight绑定数据

    我们先新建一个WPF项目MVVMLightDemo,添加GalaSoft.MvvmLight.dll(没有可以自己下载) 然后在项目中添加三个文件夹,如图: 先添加我们的Model,在Model下新建 ...

  10. DRF Django REST framework 之 频率,响应器与分页器组件(六)

    频率组件 频率组件类似于权限组件,它判断是否给予请求通过.频率指示临时状态,并用于控制客户端可以向API发出的请求的速率. 与权限一样,可以使用多个调节器.API可能会对未经身份验证的请求进行限制,而 ...