Linux中的Makefile详解
在Linux中Makefile扮演一个非常重要的角色,我们可以以Linux为平台在上面编写我们需要的C程序代码,对于C语言来说,Linux是一个非常好的平台来学习、使用、调试、验证C代码的平台,其强大的Vim编辑器,还有强大的gcc编译工具和gdb的调试工具,对于我们学习C语言都是一个非常重要的工具,我们可以非常清晰的看清C语言代码的执行过程,可以通过gdb调试工具观察代码的执行方法等等优点,我在这就不一一列举了。
使用 sp max.c 建立一个新的文件:
gcc编译工具:
I(i) 在光标前插入
A(a) 在光标后插入
O 原行上新建一行
dd 删除一行
x 删除代码中的一个
set nu 显示代码行号
set nonu 取消显示行号
sp max.c 在源文件中新建一个文件 eg:我在只有一个文件的函数如test.c中新建一个max.c文件,把
相关的代码放在其中直接在主函数中调用
ctrl + w + ↑ 就是如同上面新建的文件中移动,从一个文件的代码移动到上面一个文件中
ctrl + w + ↓ 就是如同上面新建的文件中移动,从一个文件的代码移动到下面一个文件中
数字 dd 就是从光标处剪贴几行
eg: 9 dd 就是从光标处剪贴9行
p 就是把复制的内容粘贴
yy 复制一行
u 撤销上一步操作
Ctrl+ r 恢复撤销
gg 光标快速回到首部
GG 光标快速回到尾部
objdump -h test.out 显示文件详细信息
objdump -s test.out 以十六进制显示文件
objdump -d test.out 以汇编形式显示文件
:wqa //保存全部并退出
(1) gcc text.c -o text.out //编译text.c 并生成text.out可执行文件
(2) gcc text.c max.c -o text.out //编译text.c与max.c 并生成text.out可执行文件
./text.out //执行text.out文件
执行结果如图所示:
gdb调试工具
start 开始调试
p 打印
eg: p a 打印变量a的值
eg: p *a 打印指针变量*a的值
n 下一行
bt 堆栈
l (list)列出源代码
break 设置断点调试
eg: break 12 在十二行设置断点
s (step)进入下一级函数中
f 1 切换到1堆栈中
x/6d +地址 从那个地址开始连续打印6个值
gcc -g text.c -o text.out //编译text.c文件并生成可执行文件text.out -g就是生成的可执行文件
支持gdb调试
Makefile函数
新建立一个Makefile文件, vim Makefile (文件名开头字母一定要大写)
test.out: t1.0 t2.o main.c
Tab gcc t1.0 t2.o main.c -o test.out
t1.o : t1.c
Tab gcc -c t1.c
t2.o : t2.c
Tab gcc -c t2.c
注:Tab代表用Tab填充空格
make执行以下就行了
使用Makefile更方便多用户协调编写代码
gcc -c max.c //编译生成.o文件 -c就是支持生成.o文件必须要加的gcc参数
gcc text.c -o text.i -E //预处理命令生成.i文件
gcc text.c -o text.s -S //编译生成.s汇编文件