嵌入式软件开发培训笔记——C高级 开发环境

来源:互联网 发布:淘宝汽车贴膜服务app 编辑:程序博客网 时间:2024/05/16 10:27

1GNU工具:

a)编译工具——GCCG++ 

b)调试工具——GDB

c)软件工程工具——makemakefile

d)其他工具——多个目标文件链接成可执行文件的链接器    

e)GNU资源:www.gnu.org gcc.gnu.org 

2GCC全称GNU CC,符合ANSI C标准的编译系统,编译如CC++Object CJAVA等;可在多种平台编可译可执行程序;是一个交叉平台编译器。常用的比较稳定的版本为GCC 3.3GCC4.3

GCC编译过程:a)源代码经预处理生成.i文件;b).i文件经编译器生成.s文件;c).s文件汇编处理生成.o文件;d).0文件经过链接最终生成.exe可执行程序。编译器的主要组件有分析器(源->.s)、汇编器(.s->.o)、链接器(多个.o链接成.exe)。

GCC所支持后缀名解释

.c

C源程序

.s/.S

汇编源

.C/.cc/.cxx

C++源程序

.h

预处理文件(头文件)

.m

Objective-C源程序

.o

目标文件

.i

预处理后的C

.a/.so

编译后的库文件

.ii

预处理后的C++



GCC执行过程:

a)调用cpp进行预处理,对源码中的文件包含-include头文件、预编译语句-define宏定义进行分析;

b)调用cc1进行编译,生成.o目标文件;

c)调用as进行汇编,汇编文件经预编译和汇编生成.o目标文件;

d)调用ld进行链接,生成.exe可执行文件。

GCC错误类型:

a)C语法错误——syntax error

b)头文件错误——can not find include file or directory

c)档案库错误——No such file or directoryd)未定义符号——Undefined symbol

GCC基本用法和选项、格式如下:

gcc –E test.c –o test.i  源码->预处理后的源码,仍为C文件

gcc –S test.c –o test.s  源码->汇编

gcc –c test.s –o test.o 汇编代码->汇编处理生成目标文件gcc –c可用as替换

gcc test.s –o test   ./test  将目标程序链接成库资源,生成可执行程序

以上四步可用gcc test.c –o test一步执行到位。

补充:-c选项只编译,不连接生成可执行试文件;-o filename输出文件名,不可与源文件同名;-O-O2对程序进行优化编译/连接,后者比前者更好,但过程会更慢;-Idirectorydirname目录加入到程序头文件搜索列表;-Ldirnamedirname所指出的目录加入到程序函数档案库文件的目录列表中,dirname是一个绝对路径。


使用Binutils中的readelf –h .exe文件 显示elf格式的可执行文件、以及strip .exe文件对其进行瘦身/减小体积。

Gdb调试工具:先使用gcc –g test.c –o test生成带调试信息的可执行文件,然后使用gdb test进行调试;gdb调试中相关命令如下:

查看文件  

l

查看变量值

变量名

设置断点

行号

单步运行

 s

查看断点情况

Info b

恢复程序运行

c

运行代码

r

帮助

help


补充:gcc -Wall  编译时将所有警告全部都打开

0 0
原创粉丝点击