嵌入式开发完整体系课程(含项目) 扫二维码继续学习 二维码时效为半小时

(170评价)
价格: 598.00元

所有有代码文件以及顶层目录都需要编写Makefile.am文件

还需要一个configure.ac文件(命令autoscan创建,修改成需要的文件并存为后缀为.ac的文件)

[展开全文]

gcc调试步骤

1.肉眼查看(语法错误)

2.打印调试语句,顺便定位发生错误的地方

3.判断错误的类型(看看是否段错误,非法内存访问,segmentation fault)

       3.1 如果是段错误,打开core文件,让系统保存程序发生错误时的内存状态,然后使用gdb进行单步调试

       3.2 如果不是段错误,或者调试器无法通过core文件直接定位出错点,只能求助于gdb

[展开全文]

SRC=$(wildcard *.c)

在Makefile中输写一个函数的格式:$(function arg1,arg2,arg3,....)其中function为函数名字,后面跟一个空格,然后是参数列表,多个参数间用逗号隔开,整个函数用$()包裹起来

patsubst替换指令:A=$(patsubst %c,%.O,a.c b.c)

替换后A为a.o b.o

指定终极目标:make TARGET,终极目标指makefile中第一个出现的规则中的第一个目标

指定makefile所在路径:make -c dir/

                                   make --directory=dir/

[展开全文]
617076572 · 2018-04-04 · 0

makefile中的变量定义

1.直接定义方式

B=china 

A:=I LOVE $(B)  只会对前面的语句进行搜寻,而不是整个文件。

追加变量的值A=apple  A+=tree,则A变为apple tree

修改变量的值:A=srt.c string.c  tcl.c

B=$(A:%.c=%,o) 这样B的值变为srt.o string.o  tcl.o

@echo $(A)这里的@表示只输出命令的结果,不输出命令本身

特殊变量:VPATH指定Makefile中文件的备用搜寻路径,若干目标文件或依赖文件不再当前路径时,make会在此变量指定的目录中搜寻,多个路径的话用空格或冒号隔开

[展开全文]
617076572 · 2018-04-04 · 0

程序调试方法:

肉眼查看语法错误

打印调试语句,顺便定位发生错误位置

判断错误的类型:core核心转储文件(内存照片)

如果是段错误,试图生成core文件,让系统保存程序发生错误时的内存状态,然后用gdb直接定位出错点

如果是段错误,或者调试器无法通过core文件直接定位出错点,只能求助于gdb进行单步调试

生成核心转储文件:ulimit -c unlimited

                             ulimit -a

gcc debugme.c -o debugme  -DDEBUG  -g       -gdb

./debugme,产生core出错文件,进入查看出错的位置信息,

再用gdb ./debugme core,就会提示出错的代码行位置。

 

 

 

 

 

 

 

[展开全文]
617076572 · 2018-04-04 · 0

1.GNU——autoools

makefile.am(自动生成make)

 

 

[展开全文]
frankliu · 2017-03-30 · 0

调试:1.使用肉眼查看

2.打印调试语句,顺便定位发生错误的地方

3.判断错误类型(看看是否是段错误,是否非法访问segmenttation fault)

3.1段错误:打开core文件,让程序保存发生错误是的内存状态

3.2如果不是段错误,调试器无法通过core文件直接定位出错点,或者不是段错误,只能求助于GDB进行单步调试。

使用#ifdef   #endif打印调试语句然后再编译的时候加入  如对于#ifdef   DEBUGE  #endif

gcc xxx.c   DDEBUGE便可以开始调试

如果还不可以!只能使用gdb调试(core)*(核心转储文件)内存照片,死亡照片

打开ulimit -a查看核心转储文件系统是否拍照是否使用若没有使用则:ulimit -c unlimited 启用然后再编译的时候加上gdb生成了一个core文件然后使用gdb查看哪儿错了

 

[展开全文]
frankliu · 2017-03-28 · 0