C高级(4):分文件编程&&make工具

1.1源文件:.c结尾的文件

包含main函数的.c

包含子函数的.c

1.2头文件:.h结尾文件

头文件、宏定义、typedef 、结构体、共用体、枚举、函数声明

例如:

编译:gcc main.c fun.c

执行:./a.out

include引用时“”和<>的区别:

<>去系统目录查找头文件

“”先从当前目录下查找,如果没有再去系统目录查找头文件。

系统默认搜索路径?

/usr/include

/usr/local/include

追源码:

ctrl 单击

返回:

ctrl alt -

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

gcc xx.c ---> a.out

gcc xx.c -o xx ---> xx

2.2gdb调试

gcc -g xx.c

gdb a.out

r: 运行代码

l: 查看文件

b 行号或者函数名:添加断点

info b:查看断点情况

d num(断点编号):删除断点

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读取的唯一配置文件

gcc hello.c main.c ---> a.out

gcc -c hello.c -o hello.o

gcc -c main.c -o main.o

gcc xx.o -o xx

3.2Makefile格式

目标:依赖

命令

注意:命令前敲TAB

gcc编译步骤中,可以按照如下步骤的逆序写Makefile文件

gcc -c xx.c -o xx.o 目标:xx.o 依赖:xx.c

gcc xx.o -o xx 目标:xx 依赖:xx.o

例如:写一个test.c文件,再写一个Makefile文件编译

使用make进行编译

3.3Makefile管理多个文件

首先创建多个文件,如:

写一个Makefile文件

3.4Makefile变量

3.4.1自定义变量

一般大写,取变量的值$(变量名)

= 按递归方式展开

:= 直接赋值 (当前的值是什么就立即赋值)

+= 追加新的值

?=判断之前是否定义,如果定义了,就不重新赋值;否则赋值

3.4.2预定义变量

系统预先定义好的一些变量,可能有默认值可能没有默认

RM 文件删除程序的名称,默认值为rm -f

CC C编译器的名称,默认值为cc。

CPP C预编译器的名称,默认值为$(CC) –E。

CFLAGS C编译器的选项,无默认值。

OBJS 生成的二进制文件或目标文件,自己定义

3.4.3自动变量

$< 第一个依赖的名称

$@ 目标文件的完整名称

$^ 所有不重复的依赖的名称

所有:%

总结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值