快捷搜索:  汽车  科技

嵌入式开发c语言的案例(嵌入式开发-C语言高级编程-)

嵌入式开发c语言的案例(嵌入式开发-C语言高级编程-)1、预处理(Pre-Processing) 源文件.c 生成.i 2、编译(Compiling) 文件.i生成.s 3、汇编(Assembling) 文件.s生成.o 4、链接(Linking) 文件.o生成可执行程序.exe例:分析器:将源代码转换为汇编语言 汇编器:汇编语言转换为CPU可以执行的字节码 链接器: 标准C库:核心基本用法GCC最基本的用法:gcc [options] [filenames] -c 只编译,不连接成可执行的文件 -o output filename 确定输出文件名称为 output filename 同时这个名称不能和源文件同名 -g 产生符号调试工具(GND的gdb)所必要的符号资讯,要对源代码进行调试,必须加入这个选项 -O 对程序进行优化编译、连接、采用这个选项 -O2 比-O更好的优化编译,连接,编译速度慢 -I d

GNU工具

-编译工具: 把一个源程序编译为一个可执行程序 -调试工具:能对执行程序进行源码或汇编级调试 -软件工程工具:用于协助多人开发或大型软件项目管理,如make CVS subvision -其他工具:用于把多个目标文件链接成可执行文件的链接器,或都用作格式转换的工具1、GCC编译器

简介

全称为GNU CC,GNU项上中符合ANSI C标准的编译系统 编译如C、C 、Object、C 、JAVA... GCC 是可以在多种硬件平台上编译出可执行程序的超级编译器,其执行效率与一般的可编译器相比平块效率高20%以上 一个交叉平台编译器,适合在嵌入式领域的开发编译。

所支持后缀

- .c C原始程序 - .C/.cc/.cxx C 原始程序 - .m Objective-C原始程序 - .i 已经处理过的C原始程序 - .ii 已经处理过的C 原始程序 - .s/.S 汇编语言原始程序 - .h 头文件 - .o 目标文件 - .a/.so 库文件

编译器的主要组件

分析器:将源代码转换为汇编语言 汇编器:汇编语言转换为CPU可以执行的字节码 链接器: 标准C库:核心

基本用法

GCC最基本的用法:gcc [options] [filenames] -c 只编译,不连接成可执行的文件 -o output filename 确定输出文件名称为 output filename 同时这个名称不能和源文件同名 -g 产生符号调试工具(GND的gdb)所必要的符号资讯,要对源代码进行调试,必须加入这个选项 -O 对程序进行优化编译、连接、采用这个选项 -O2 比-O更好的优化编译,连接,编译速度慢 -I dirname 将dirname所指出的目录加入程序头文件目录列表中 -L dirname 将dirname所指出的目录加入到程序函数档案库文件的目录列表中

常见错误

一、C语法错误 -错误信息:文件source.c中第几行有语法错误(syntex error) 二、头文件错误 -找不到头文件head.h(Can not find include file head.h) 三、档案库错误 -链接程序找不到所需的函数库(ld:-lm: No such file or directory) 四、未定义符号 -有未定义的符号(Undenfined symbo1)

编译过程

1、预处理(Pre-Processing) 源文件.c 生成.i 2、编译(Compiling) 文件.i生成.s 3、汇编(Assembling) 文件.s生成.o 4、链接(Linking) 文件.o生成可执行程序.exe

例:

#include <stdio.h> #include <math.h> #define N 10 #define _DEBUG_ int main(){ double m =615 n; m =N; n = sqrt(m); #ifdef _DEBUG_ printf("debug:m=%lf n=%lf\n" m n); #else printf("release:m=%lf n=%lf\n" m n); #endif return 0; } gcc -E gccdemo.c -o gccdemo.i 输出.i gcc -o gccdemo gccdemo.c -lm2、GDB调试工具

首先使用gcc对test.c进行编译,注意一定要加上选项 -g gcc - test.c -o test l 查看文件 b 6 设置断点 del 1 删除断点 info b 查看断点情况 p n 查看变量值 n s 单步运行 c 恢复程序运行 help 帮助 q 退出调试 set 参数 设置输入参数

嵌入式开发c语言的案例(嵌入式开发-C语言高级编程-)(1)

猜您喜欢: