您的位置:首页 > 运维架构 > Linux

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

2015-04-16 12:15 411 查看
(1)GNU工具:
a)编译工具——GCC、G++; 
b)调试工具——GDB;
c)软件工程工具——make、makefile;
d)其他工具——多个目标文件链接成可执行文件的链接器    
e)GNU资源:www.gnu.org 、gcc.gnu.org 等
(2)GCC全称GNU CC,符合ANSI C标准的编译系统,编译如C、C++、Object
C、JAVA等;可在多种平台编可译可执行程序;是一个交叉平台编译器。常用的比较稳定的版本为GCC 3.3、GCC4.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 directory;d)未定义符号——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对程序进行优化编译/连接,后者比前者更好,但过程会更慢;-Idirectory将dirname目录加入到程序头文件搜索列表;-Ldirname将dirname所指出的目录加入到程序函数档案库文件的目录列表中,dirname是一个绝对路径。



使用Binutils中的readelf –h .exe文件 显示elf格式的可执行文件、以及strip .exe文件对其进行瘦身/减小体积。
Gdb调试工具:先使用gcc –g test.c –o test生成带调试信息的可执行文件,然后使用gdb test进行调试;gdb调试中相关命令如下:

查看文件  
l
查看变量值
p 变量名
设置断点
b 行号
单步运行
n 或 s
查看断点情况
Info b
恢复程序运行
c
运行代码
r
帮助
help
补充:gcc -Wall
 编译时将所有警告全部都打开
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux c开发环境
相关文章推荐