一、在 Linux 中安装 c 语言开发工具与编译器
1、安装gcc编译器
sudo apt-get install gcc
2、安装g++编译器
sudo apt-get install g++
二、make 进行 c 语言项目的自动化构建
教练的视频https://www.imooc.com/learn/394。
自己学习博客https://www.pianshen.com/article/4661326631/
https://blog.csdn.net/qq_22182835/article/details/89467386
https://blog.csdn.net/baby_hua/article/details/77581453
1、c语言程序编译
1)、预处理
gcc -E .c文件 -o 输出文件名
对代码进行头文件的展开、宏替换、条件编译、去掉注释
生成 .i文件
2)、编译
gcc -S 编译文件 -o 输出的汇编文件名
生成.S文件
3)、汇编
gcc -c 编译 -o 输出的机器码文件
4)、链接
链接成可执行文件(链接分为:动态链接(gcc默认)、(静态链接(ld)))
生成:.out文件
2、make工具与makefile文件
1)、简介
在linux系统中make是一个非常重要的编译命令,不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或makeinstall。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile 带来的好处就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
2)、make的工作原理
当make 命令被执行时,它会扫描当前目录下Makefile或makefile文件找到目标以及其依赖。如果这些依赖自身也是目标,继续为这些依赖扫描Makefile 建立其依赖关系,然后编译它们。一旦主依赖编译之后,然后就编译主目标,假设你对某个源文件进行了修改,你再次执行make 命令,它将只编译与该源文件相关的目标文件,因此,编译完最终的可执行文件节省了大量的时间。
可以使用make -h查看参数
3、用make工具自动化构建
make需要知道什么:
make编译的文件叫目标target;(严格说来,make不仅仅可以用来编译文件)
目标可以是任何其他文件生成的文件,也就是说目标可以是一批文件压缩而成的压缩文档;
对于每个目标,make需要知道两件事:
依赖项:生成目标需要那些文件;
生成方法:生成该文件时需要用哪些指令;
依赖项和生成方法合在一起构成了一条规则;有了规则,make就知道如何生成目标;
make是如何工作的:
make在Windows中另有其名,使用时请注意;
如果想把thruster.c编译成目标代码thruster.o:
thruster.o 就叫目标,因为想生成这个文件;
thruster.c 是依赖项,因为创建目标时需要它;
生成方法是转化时的编译命令:gcc -c thruster.c
这就是创建thruster.o的规则;就是说,只要告诉make依赖项及生成方法,就可以让make决定什么时候重新编译;
而makefile/Makefile文件就是告诉make需要的规则
4、Makefile 文件的基础编写语法规则
#目标对象:依赖对象
#[Tab]命令操作
main:main.c child.c
gcc main.c child.c -o main
在 makefile 文中 # 表示批注;
[Tab] 表示在命令行的(制表)字符;
目标对象 和 依赖对象 需要用:来分隔;