1.编译代码的基本知识
源文件:存放可编辑编程语言代码的文件。
目标文件:源文件经过编译器的编译,生成的CPU可识别的二进制代码文件。(但是目标文件一般不能执行,因为其中引用的库中的变量和函数还没有解析)。
可执行文件:目标文件与相关库链接之后的文件,可执行。
预编译:将源文件中的头文件指明的文件代码引入源代码,并替换宏定义。
编译器安装后,头文件路径和库文件路径已指明,供编译器默认查找。
2.GCC
GCC是Linux环境下的代码编译工具集。GCC包含不同语言代码对应的编译器。GCC中C语言的编译器是 gcc。
当在Linux环境下输入命令 gcc helloworld.c 时:
a)GCC根据文件扩展名,选择相应语言的编译器。识别C文件,选择对应的编译器 gcc。
b)由于命令没有带参数,所以gcc编译器将进入自动编译流程:预编译、将C文件编译生成目标文件、将目标文件链接默认系统库生成可执行文件、删除目标文件。
上述未带参数的编译命令会生成默认名称的可执行文件 a.out
指定可执行文件的名称:gcc -o hellotest helloworld.c
生成目标文件,不自动删除目标文件:gcc -c helloworld.c 生成默认的目标文件 helloworld.o
生成目标文件,并指定目标文件的名称:gcc -c -o test.o helloworld.c 生成目标文件 test.o
编译两个相互引用的文件,统一生成一个可执行文件:gcc -o helloworldtest helloworld.c main.c
也可以分步执行:gcc -c helloworld.c main.c
gcc -o helloworldtest helloworld.o main.o
预编译:gcc -o helloworld.i -E helloworld.c 生成预编译后的中间文件helloworld.i,其中的宏已经替换
3.Makefile
多文件工程的编译可以编写Makefile文件,然后通过make命令读取Makefile文件中的配置,将多个文件编译成可执行文件。
4.GDB
(gdp) help 获取命令帮助
(1)GDB看超长字符串的完整内容: 默认显示是截断的,末尾有省略号"..."
(gdb) set print element 0
(gdb) p echo_info
(2)跳出函数内部,继续执行:(gdb) finish
(3)调整显示格式:(gdb) set pr pr
(4)一直执行到259行:(gdb) until 259
(5)条件断点:(gdb) b -c ((*(pPData+7)==6)&&(*(pPData+8)==7)&&(*(pPData+9)==8)) drv_rx_pkt
(6)查看报文内容,以十六进制:(gdb) p/x pktEnv->pPkt