文本程序到可执行文件生成无论在什么平台大致分为以下几个部分: 
  1.用编辑器编写源代码,如.c文件。 
  2.用编译器编译代码生成目标文件,如.o。 
  3.用链接器连接目标代码生成可执行文件,如.exe。 
  Linux平台下,.o文件一般是通过编译的但还未链接的目标文件,.out文件一般都是经过相应的链接产生的可执行文件(linux下)。当然这是一般情况下人们这么设置,而真正的,在linux中 .o通常保存的是可执行代码 ,至于可执行文件则没有规定扩展名,用的是文件属性位来决定的是否可执行。在chmod中设置。 
  我们知道编译和链接阶段是靠g++和gcc编辑器来完成,这两个编译阶段是相同的,但是链接阶段g++默认链接c++库,所以一般情况下用gcc编译c文件,而g++编译cpp文件。当然g++也可以编译c文件,而gcc编译cpp文件则需要在后面加上参数-lstdc++,作用就是链接c++库。 
  但是如果编译和链接的阶段如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。 
  对于一个大工程,编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。所以在编程的世界里没有捷径可走,还是要脚踏实地的。 
  原文件—cmakelist —cmake —makefile —make —生成可执行文件(make中则包含了多条链接以及gcc/g++编译语句)。 
  参考自下面博文: 
  http://blog.sina.com.cn/s/blog_74a459380102uxlz.html

--------------------- 
作者:无鞋童鞋 
来源:CSDN 
原文:https://blog.csdn.net/FX677588/article/details/53159019 
版权声明:本文为博主原创文章,转载请附上博文链接!

Linux下gcc/g++、make和cmake的区别相关推荐

  1. Linux下gcc/g++编译器gdb调试器和makefile的使用

    文章目录 一.gcc的使用 gcc选项 二.gdb的使用 三.Linux项目自动化构建工具-make/Makefile 3.1 概念 3.2 使用 3.3 原理 一.gcc的使用 首先我们知道一个C/ ...

  2. Linux下 gcc/g++ 版本切换与CMake各版本安装

    一. gcc/g++ 版本切换 首先下载需要的版本(以gcc8为例) sudo apt-get install gcc-8 删除原有的gcc链接, 改为新链接 cd /usr/bin sudo rm ...

  3. linux中i的英文单词,Linux下gcc/g++中-I(i的大写)、-L和-l

    makefile 学习网站 http://blog.csdn.net/ruglcc/article/details/7814546/#t30 第九章 C语言在嵌入式中的应用 上章回顾 编码的规范和程序 ...

  4. Linux下gcc/g++中-I(i的大写)、-L和-l

    -I(i的大写) include头文件非标准库中存在的也不是在当前文件夹下的,需要将地址用-i(大写)包含 例:-I /home/src/ -L 用到的函数或操作非标准库下的,需要将库存在的地址用-L ...

  5. linux opengl配置编译,Linux下OpenGL的安装与cmake编译OpenGL程序

    Linux下OpenGL的安装与cmake编译OpenGL程序 OpenGL安装 安装命令如下: $ sudo apt install build-essential $ sudo apt insta ...

  6. 采用 linux+eclipse+gcc g++ 来弄C 的多线程编程

    ---------------------------------------- ================ 对于 C项目的 多线程编程 放弃 windows+mingw+eclipse 采用 ...

  7. Linux 下 gcc的安装

    Linux 下 gcc的安装 gcc的安装 问题 检查版本 解决过程 gcc的安装 问题 在一个新的Linux服务器上安装nginx的时候,命令都不能解析,缺少gcc编辑器,安装gcc的命令也出错. ...

  8. 【OpenCV】Linux 下用 g++ 编译 OpenCV 程序

    编译命令: g++ gaussianBlur.cpp -o test `pkg-config --cflags --libs opencv` 执行编译生成的可执行文件: ./test gaussian ...

  9. 图解Cygwin安装教程(win10下gcc,g++安装)

    Cygwin安装教程(win10下gcc,g++安装) 1. 从cygwin官网下载安装包,下载地址:http://www.cygwin.com/setup-x86_64.exe 2. 点击" ...

最新文章

  1. 研究速递:老年人的心智能力不一定在衰减,抗干扰的能力会更强
  2. 使用vuex实现父组件调用子组件方法
  3. 微信小程序和传统网页开发的区别
  4. php 完全前后端分离使用jwt,larke-admin 是一套使用 Laravel 8 、JWT 和 RBAC鉴权的前后端分离的通用后台管理系统...
  5. 学弟学妹看我文章顺利毕业,基于HTML+Javascript五子棋人机博弈系统设计与实现《记得收藏》
  6. IntelliJ IDEA 记学习笔《装阿里代码规范插件》
  7. java 生成 rtf_如何从Java生成RTF?
  8. H3C和锐捷如何查看光衰
  9. 银河麒麟桌面V10微信不能登录
  10. 在SQL中创建时间维度表
  11. HTML图片映射矩形坐标,HTML图片热区map area的用法(转载)
  12. 链栈的表示和实现(C++)
  13. switch 语句 -- 超详解
  14. 观战朝鲜vs巴西后,给中国足球的两点建议
  15. 加载java连接sqlserver驱动_sqlserverdriver配置方法 jdbc连接sqlserver
  16. 3 Python数据分析 美国各州人口分析案例 Pandas高级操作 美国大选献金案例 matplotlib
  17. 超详细的纯CSS的照片墙特效
  18. 第十章 IP的分片与重装
  19. C. Electrification(尺取)
  20. 十四、圣经是蒙恩的凭藉

热门文章

  1. python中os.path.basename的使用
  2. 利用matlab写一个简单的拉普拉斯变换提取图像边缘
  3. -函数-MATLAB提供的函数/主子函数/匿名-嵌套函数
  4. smooth_l1_loss(y_true, y_pred)
  5. Why not inherit from ListT?
  6. 违反了引用完整性约束。Dependent Role 具有多个具有不同值的主体。S级乌龙,自己制造的笑话...
  7. loadrunner:关联操作
  8. php.ini – 配置文件详解
  9. Ajax Post请求实例
  10. NSArray 的遍历