Linux系统学习:GCC编译以及Makefile编写

文章详细介绍了GCC的编译过程,从预处理到链接的步骤,并探讨了Makefile的基本语法和应用,包括如何定义规则、自动推导依赖关系以及清理目标文件。通过实例展示了如何使用Makefile简化编译和清理操作。
摘要由CSDN通过智能技术生成

目录

使用GCC编译

编译原理

内容准备

下载练习用文件

文件结构树

编译过程

使用Makefile

基本知识

基本语法

clean的语法

提升效率

makefile 自动推导

makefile 变量

实际运用

使用 make 生成可执行文件

使用 make clean 清除


使用GCC编译

编译原理

预处理( -E ) --> 编译( -S ) -----> 汇编( -c ) --> 链接( -o )

.c 源文件 -- .i 预处理后文件-- .s 汇编文件 ---. o目标文件

gcc -E test.c -o test.i //不用 -o 命名会生成 1.out
gcc -S test.i -o test.s
gcc -c test.s -o test.o
gcc -o test.o -o test

内容准备

下载练习用文件

这是学校要求滴

使用命令 git clone , 发现没有安装相应的软件包,下载即可

再次使用 git clone 命令就成功克隆 git 仓库并可以使用了

文件结构树

用命令 tree 即可显示当前文件夹与下层文件结构

编译过程

我有 main.c 、cal( 文件夹 )、show( 文件夹 ),具体看上面的树;

main.c 依赖这两个文件夹里的 .c (main.c 调用了这两个文件的内容,那么 main.c 要成功到汇编需要取决于这两个文件是否成功到汇编,这就有了依赖关系),所以要先让这两个文件夹到汇编;

再把这三个汇编文件链接,生成可执行文件,用 -o run 指令命名为 run ;

用 ./run 运行一下。

 

使用Makefile

基本知识

基本语法

在终端中使用 make 指令自动编译

Makefile文件是一个纯文本文件,直接在工程目录下创建即可。然后,按照Makefile的书写规则进行书写。规则如下:

target ... : prerequisites ...
        command
        ...
        ...

target 是一个目标文件,比如 .o 或可执行文件,简单的说就是,你想要得到的是什么。

prerequisites 是要生成那个target所需要的文件。

command 是make需要执行的命令。(任意的Shell命令)

clean的语法

在终端中使用 make clean 指令删除文件;

编写 clean 将生成的目标文件和可执行文件删除,将删除命令写在clean下面,要注意一般clean 在文件末尾,不能在文件开头。

这里面是别人的例子:

run: main.o girl.o
    gcc main.o girl.o -o run

girl.o: girl.c
    gcc -c girl.c -o girl.o

main.o: main.c
    gcc -c main.c -o main.o

clean:
    rm *.o
    rm run

提升效率

makefile 自动推导

makefile 识别一个 .o 时,会自动推导依赖关系,并自己产生编译命令( 自动帮你写 .c -> .o )

makefile 变量

$(objects) : $ 是变量标志,(objects) 表示替换掉 $ 的内容来自 objects

objects 在第一行就给出了

实际运用

使用 make 生成可执行文件

使用 make clean 清除

 

文章参考:gcc编译C代码以及Makefile文件的书写 - 知乎 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值