linux make和gdb
来源:互联网 发布:网络女主播谈恋爱 编辑:程序博客网 时间:2024/06/05 00:38
在实际过程中,通过gcc来编译程序是很低效的,原因有以下两点:
1.程序往往由多个源文件组成,源文件越多,gcc命令行越长。同时各种编译规则会增加编译的复杂度。
2.在调试过程中,每次调试一般只会修改部分源文件,但是用gcc命令,会把没有修改的源文件也一起编译,这样会影响编译的整体效率。
gcc提供了半自动化的工程管理器Make。
使用make命令前,需编写编译规则至Makefile这个文件中。
创建Makefile后,使用vim Makefile 进行编辑。
Makefile中由以下内容组成
1.生成的目标文件 (target file)
2.生成目标文件所需的依赖文件(dependency file)
3.生成目标文件的编译规则命令行(command)
格式:
target file : dependency file
(tab)command
或者:
cc=gcc
target=
object=
$(target):$(object)
(tab)$(cc) $(object) -o $(target)
其中object后面可以跟多个依赖文件。
举例:
cc=gcc
target=hello
object=hello.o
$(target):$(object)
(tab)$(cc) $(object) -o $(target)
clean命令
在Makefile中写
clean:
(tab)rm -rf hello *.o
意为清楚生成的可执行文件和依赖文件
倘若有某个目录叫做clean
则需添加伪目标.PHONY:clean
伪目标不是真的目标文件,只是一个符号,通过伪目标可以make工程管理器只执行规则命令。
gdb
gdb用于调试程序
命令: gcc -g test.c -o test
gdb test
指令:
info b查看设置的断点list(或l)列出源代码,接着上次的位置往下列,每次列10行b设置断点 b+行号list 函数名列出某个函数的源代码next(或n)执行下一行语句print(或p)打印表达式的值,通过表达式可以修改变量的值或者调用函数quit(或q)退出gdb
调试环境print (或p)查看变量值run(或r)开始执行程序step(或s)执行下一行语句,如果有函数调用则进入到函数中- linux make和gdb
- Linux编程入门-gcc、make和gdb简介
- Linux调试器gdb和工程管理器make
- gdb和make初了解
- linux GCC GDB make 编程及命令
- linux工具使用:vi,gcc,gdb,make
- Linux开发工具(gcc gdb make shell)——c的预处理、编译、汇编和链接
- Linux开发工具(gcc gdb make shell)——动态库和静态库比较
- Linux下调试器 GDB和工程管理器MAKE 应用详解!
- Linux下调试器 GDB和工程管理器MAKE 应用详解!
- Linux开发工具(gcc gdb make shell)——动态库和静态库比较
- Linux开发工具(gcc gdb make shell)——c的预处理、编译、汇编和链接
- Linux学习 [2] vi编辑器 gcc工具链 make和Makefile gdb调试工具
- 关于gcc,Binutils,Make, gdb 和 glibc
- make和gdb的简单应用
- 工程管理器make和调试工具gdb
- Linux开发工具(gcc,gdb,make,shell)——linux中静态库和动态库的区别(三)
- Linux下的C编程实战之gcc/gdb/make
- c#图片反色,取底色,照片底色效果
- Java reflect Type类及其子类用法分析
- Json解析开源框架--Gson 的基本使用
- 【Spring】bean对象创建的细节(五)
- some tips about python Two
- linux make和gdb
- 数据结构与算法·实验八
- 【图像融合】高斯金字塔
- 大话设计模式之总结2
- 【Spring】IOC容器--创建对象(六)
- 激活函数、BP反向传播算法、三种梯度下降、softmax函数及其推导
- Ring3 调用 NtQueryObject 获得文件句柄对应的对象名时调用线程死锁的原因
- opencv,cv2.putText()用法
- 数据结构与算法·实验九