2.28 嵌入式Linux开发工具-gdb make工程管理器

2019-07-13 04:14发布

作业:知道汇编文件,反汇编成c语言文件,对比汇编和C语言 进入gdb调试后,输入disas main命令反汇编c程序   #include VS #include "stdio.h" 头文件的搜索路径不同 <>只在系统指定的目录下搜索(/usr/inlcude/) 多个文件编译:gcc main.c add.c把需要的文件都带上 ""先在当前找,当前找不到就在系统头文件目录中找 自己写的头文件用双引号,拉别人库或系统自带的用<>, gcc main.c add.c -I[目录路径]大I指定第三方搜索路径 Gcc -Wall 文件名,将所有的警告都打开,不能有警告信息 -w关所有警告 栈空间是系统管理的,存储空间的分配是系统决定的 -O1 -O2 -O3编译优化 O1优化代码结构,O2优化函数调用过程对函数变量空间的释放,O3优化函数符号表的顺序 -l 链接库 -lm链接数学库,m表示函数 库文件:库用来保存函数和变量,看不到实现,但能使用它(静态库后缀.a,动态库后缀.so) 根目录下 /lib/保存系统运行需要的库,/usr/lib保存程序运行需要的库 库里面文件有前缀和后缀,libm.a是数学库,在/usr/lib目录下 静态库的加载是在编译阶段加载,动态库在执行980107阶段加载 静态库动态库制作 开发工具-gdb 调试器 (1、运行程序 2、设置断点 3、查看变量的状态) Gcc -g demo.c -o demo Gdb demo 回车运行 进入gdb调试界面,run命令运行程序,调试器中用list命令可以查看源码,设置断点用break+行号命令(break 10),后面还可以加条件表达式if i=10,打完断点再run,此时可以print变量(print i),此命令查看变量值,next命令单步执行,continue继续运行跳过当前断点,quit退出断点运行,查看断点信息(info break),删除断点,delete+断点编号(delete 1),break+函数名,即在函数调用时加断点。next单步执行不会进入函数,step也是单步执行,能进入子函数, 所有命令都可以用首字母代替。 语法错误,编译器检查,逻辑错误 自己调整,运行时错误,比如段错误,一般是内存错误,内存泄漏,空洞, 开发工具-make 工程管理器 作用:自动编译(按照规定的编译逻辑进行编译)(根据文件是否修改进行选择编译) make要想工作,是按Makefile文件中内容工作,如何编写Makefile makefile语法(三要素):目标文件 依赖文件 命令 目标:依赖 命令(按TAB) 三者关系,执行命令,最终生成目标,依靠依赖文件 从第一行执行,如果依赖的文件是另一个目标,那么跳到后面一条目标体处 Makefile中先把所有的.c转换成.o文件,再从.o文件转换到可执行文件,而不是直接转换 完成c程序编写和Makefile文件编写后,直接输入make命令,就能运行, 伪目标,隐藏命令用@, Makefile文件名重命名,按照指定文件操作,使用make -f 文件名 Sp add.c分屏代码