嵌入式Linux程序设计基础

嵌入式Linux程序设计基础

ID:46379708

大小:539.50 KB

页数:70页

时间:2019-11-23

嵌入式Linux程序设计基础_第1页
嵌入式Linux程序设计基础_第2页
嵌入式Linux程序设计基础_第3页
嵌入式Linux程序设计基础_第4页
嵌入式Linux程序设计基础_第5页
资源描述:

《嵌入式Linux程序设计基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章嵌入式Linux程序设计基础本章要点1、嵌入式Linux编译器GCC2、“文件包含”处理3、make命令和Makefile文件4、使用autotools系列工具5、位运算单击此处编辑母版副标题样式4.1嵌入式Linux编译器Linux下C语言编译过程GCC编译器Linux下C语言编译过程Linux下的C语言程序设计与在其他环境中的C程序设计一样,主要涉及编辑器、编译链接器、调试器及项目管理工具。(1)编辑器.Linux下的编辑器就如Windows下的记事本、写字板等一样,完成对所录入文字的编辑功能。Linux

2、中最常用的编辑器有vi(vim)和emacs,(2)编译链接器。编译是指源代码转化生成可执行代码的过程,它所完成的主要工作如图所示。编译过程是非常复杂的,它包括词法、语法和语义的分析、中间代码的生成和优化、符号表的管理和出错处理等。在Linux中,最常用的编译器是gcc编译器。(3)调试器调试器并不是代码执行的必备工具,而是专为方便程序员调试程序而用的。gdb是绝大多数Linux开发人员所使用的调试器,它可以方便地设置断点、单步跟踪等。(4)项目管理器。Linux中的项目管理器“make”有些类似于Windows中

3、Visualc++里的“工程”,它是一种控制编译或者重复编译软件的工具,另外,它还能自动管理软件编译的内容、方式和时机,使程序员能够把精力集中在代码的编写上而不是在源代码的组织上。GCC编译器Linux系统下的gcc(GNUCCompiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作之一。gcc可以在多种硬体平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%~30%。GCC编译器能将C、C++语言源程序、汇编程序编译、链接成可执行文件。在Linux系统中,可执行文件没有统

4、一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。GCC编译器使用GCC编译程序时,编译过程可以被细分为四个阶段:预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(Linking)GCC编译器gcc通过后缀来区别输入文件的类别:.c为后缀的文件:C语言源代码文件.a为后缀的文件:是由目标文件构成的库文件.C,.cc或.cxx为后缀的文件:是C++源代码文件.h为后缀的文件:头文件.i为后缀的文件:是已经预处理过的C源代码文件.ii为后缀的文件:是已经预处理过的

5、C++源代码文件.o为后缀的文件:是编译后的目标文件.s为后缀的文件:是汇编语言源代码文件.S为后缀的文件:是经过预编译的汇编语言源代码文件。起步(演示)hello.c:#includeintmain(void){printf(Helloworld!);return0;}编译和运行这段程序:#gcchello.c-ohello#./hello输出:Helloworld!Gcc的基本用法和选项Gcc最基本的用法∶gcc[options][filenames]-c:只编译,不连接成为可执行文件。-

6、ooutput_filename:确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。-g:产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。-O:对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,产生的可执行文件的执行效率较高。-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。编译选项(optimize.c)#includeintmain(void){doublecou

7、nter;doubleresult;doubletemp;for(counter=0;counter<2000.0*2000.0*2000.0/20.0+2020;counter+=(5-1)/4){temp=counter/1979;result=counter;}printf(Resultis%lf,result);return0;}1.gccoptimize.c-ooptimizetime./optimize2.gcc–Ooptimize.c-ooptimizetime./optimize对比两次执行的

8、输出结果不难看出,程序的性能的确得到了很大幅度的改善-static:静态链接库文件例:gcc–statichello.c-ohello库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.solibhello.a。当使用静态库时,连接器找出程序所需的函数,然后将它们拷贝到可执行文件,一旦连接成功,静态程序库也就不再需要了。然而

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。