不能迷恋游戏,改看小说
废话少说,我先来回顾一下昨天的内容
昨天讲的知识不多,主要就五个知识点:1、vi的使用(前面讲过了,就没再细说);
2、编译命令gcc:编译命令可细分为预处理、编译、汇编、链接
预处理:主要处理源文件中以“#”开头的,像#include <stdio.h>、#include <stdlib.h>等语句,产生一个*.i文件
命令为gcc -E -o *.i *.c
编译命令:检查代码的规范性及是否有语法错误,检查无误将会被会变成会变文件,预处理产生.s文件
命令为gcc -S -o *.s *.i
汇编命令:将.s文件转换成计算机能够识别的二进制01的汇编文件,产生*.o文件,*.o文件不能被执行
命令为gcc -c -o *.o *.s
链接命令:在链接阶段,通过链接各种静态库和动态库生成可执行文件
命令为gcc -o * *.o
可通过命令直接将*.c文件直接转换成各类文件,不用一步步去生成,当然,计算机是一步步去生成的
gcc 常见的用法
gcc -c
gcc -E
gcc -S
gcc -o 生成指定的输出文件
gcc -v 查询gcc版本信息
gcc -g 生成调试信息,gdb调试器可以利用该信息
gcc -I 指定额外的头文件搜索路径
gcc -L 指定额外的函数库搜索路径
gcc -static 静态链接库,默认都是动态链接库
gcc -w 不生成任何警告信息
gcc -Wall 生成所有警告信息
gcc -c zmx.c -o zmx
gcc -o zmx zmx.c
gcc zmx.c -g -o zzz
其中通过命令gcc -g -o * *.c可生成可调式文件,对文件进行调试,检查程序运行是否有误
3、gdb调试
简介:是Linux系统上的一种可缺省(不是系统强制自带)的调试器
进入gdb调试方法:1、命令gdb 调试文件名2、gdb ->file 调试文件名
gdb的常用调试命令
命令 简写 格式含义
file file 文件名 加载文件
display display 变量名显示参数(设置监听变量)
run r run args运行程序
list l list [开始,结束] 列出文件的代码清单
print p print 变量名 打印变量的内容
break b break [行号或函数名] 设置断点
continue c continue [开始,结束]继续运行
info i info 变量名 列出信息
next n next 下一行
step S step 进入函数(步入)
delete 删除短点
disable 禁用断点
enable 恢复断点
quit q退出
4、makefile
makefile文件的作用就是盖房子,先构建蓝图,然后找材料,找方法,构建好之后终端输入make即可
(1)make 和 Makefile 概述
make 是一个命令,用来解析Makefile文件;
Makefile 是一个文件,用来告诉 make 命令如何编译整个工程,生成可执行文件。
(2)make 命令
make [选项] [Makefile 文件]
make 执行的流程:
1. 查找当前目录下的 Makefile 文件;
2. 初始化 Makefile 文件中的变量;
3. 分析 Makefile 中的所有规则;
4. 为所有的文件创建依赖关系;
5. 根据依赖关系,决定哪些目标文件要重新生成;
6. 执行生成命令。
(3)Makefile 文件内容
1. 规则
(1)Makefile 是由规则来实现的: 目标 依赖 命令
(2)Makefile 的格式:
目标: 依赖
<Tab> 命令
目标和依赖之间,通过“:”分隔,命令前面,是由“Tab”键产生的空格。
当 make 命令去执行 Makefile 文件时,其规则被这样处理:
·目标是文件,依赖也是文件。若依赖文件的时间,比目标文件的时间新,说明依赖文件被更新了。则运行规则包含的命令,产生新的目标文件。
·如果依赖的是另一条规则的目标,则先跳到另一条规则去执行命令,再返回当前规则。
·如果目标不是一个存在的文件,则一定执行。(目标不存在,必须执行)