make与Makefile简单整理

一、在 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] 表示在命令行的(制表)字符;

目标对象 和 依赖对象 需要用:来分隔;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值