分文件编程——Makefile

1.分文件编程

1.1源文件:

.c结尾的文件
包含main函数的.c
包含子函数的.c

1.2头文件:

.h结尾的文件
文件包含
头文件、宏定义、typedef、结构体、共用体、枚举、函数声明…
调用时用#include"xx.h"
#include< >与#include " "区别?
< >去系统默认路径下搜索头文件
" "先再当前路径下搜索,如果找不到就去系统默认路径下查找
系统默认搜索路径?
/usr/include
/usr/local/include

2. 编译工具

2.1gcc编译工具

预处理:#开头内容,展开头文件、替换宏定义、删除无用注释,不会检查语法错误
gcc -E xx.c -o xx.i
编译:检查语法错误,有错就报错,无错就继续生成汇编文件
gcc -S xx.i -o xx.s
汇编: 将汇编文件生成不可执行的二进制文件
gcc -c xx.s -o xx.o
链接: 链接库文件,生成可执行的二进制文件
gcc xx.o -o xx

2.2gdb调试

gcc -g xx.c
gdb a.out
r:运行代码
l:查看文件
b 行号:添加断点
info b:查看断点信息
d num:删除断点,num是断点的编号(通过info b查看)
p 变量名:查看变量的值
s/n:单步运行,s会进入子函数顺序执行,n不会进入子函数,直接调用结束
c:执行到下一个断点的位置
help:帮助
q:退出
步骤:代码写好后,可以先通过gcc -g进行编译,没有错误后可以通过gdb a.out进行调试
,输入l查看文件内容,通过b设置断点,输入r运行到断点,然后通过n或s可以进行单步调试,q退出

3. make

3.1定义

make:工程管理器
make工程管理器就是一个“自动编译管理器”这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作。
Makefile或makefile是make读取的唯一配置文件

3.2Makefile格式

目标:依赖
命令
注意:命令前敲TAB
例如:写一个test.c文件,再写一个Makefile文件编译
在这里插入图片描述

为了避免同名文件可以加如下指令,利用clean伪目标执行删除指令

在这里插入图片描述

3.3Makefile管理多个文件

首先创建多个文件,如:
在这里插入图片描述
写一个Makefile文件:
在这里插入图片描述
执行
make
./test

3.4Makefile变量

自己定义的变量:一般用大写表示变量名,取变量的值用$(变量名)
= 递归方式展开
:= 直接赋值(当前的值是什么就立即赋值)
+= 追加新的值
?= 判断之前是否定义,如果定义了,不重新赋值,否则赋值

3.4.2预定义变量

RM 文件删除程序的名称,默认值为rm -f
CC C编译器的名称,默认值为cc。
CPP C预编译器的名称,默认值为$(CC) –E。
CFLAGS C编译器的选项,无默认值。
OBJS 生成的二进制文件或目标文件,自己定义

3.4.3自动变量

$< 第一个依赖的名称
$@ 目标文件的完整名称
$^ 所有不重复的依赖的名称
最后makefile可不断简化
在这里插入图片描述

  • 22
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值