实验报告三-GCC编译程序.doc

实验报告三-GCC编译程序.doc

ID:55027790

大小:173.50 KB

页数:4页

时间:2020-04-26

实验报告三-GCC编译程序.doc_第1页
实验报告三-GCC编译程序.doc_第2页
实验报告三-GCC编译程序.doc_第3页
实验报告三-GCC编译程序.doc_第4页
资源描述:

《实验报告三-GCC编译程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数计学院嵌入式操作系统实验报告实验三GCC编译程序班级嵌入班姓名0罗航l实验目的:编写一个应用程序,使用gcc进行编译,并分别使用-o,-g,-static,-O2等选项,了解这些选项的作用。l实验设备:软件:安装了Fedora11的vmware虚拟机。硬件:PC机一台。l背景知识:1.gcc的概念:GCC(GNUCompilerCollection,GNU编译器套装),是一套由GNU开发的编程语言编译器。GCC原名为GNUC语言编译器,因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也

2、变得可处理Fortran、Pascal、Objective-C、Java,以及Ada与其他语言。我们使用的gcc命令主要是用于处理c语言程序。2.gcc的执行过程:虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(i

3、nclude)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的库中连到合适的地方

4、。l实验步骤:1.先用vi编辑hello.c文件,内容如图所示。第4页共4页数计学院嵌入式操作系统实验报告2.gcc命令的一般格式为:gcc[选项]要编译的文件[选项][目标文件]。下面使用命令gcchello.c–ohello,编译hello.c,并生成可执行文件hello,并使用命令./hello来执行。要求截图:注意:上面的命令将.c文件生成了可执行文件,实际上是将预处理、编译、汇编、连接一步完成,下面我们将介绍四个流程分别做了什么工作。3.使用-E选项,执行预处理工作。使用命令gcc-Ehello

5、.c-ohello.i对hello.c进行预处理,生成文件hello.i。要求截图:使用命令cathello.i查看hello.i文件的内容,可以看到头文件stdio.h中包含的内容替换掉了原先代码中的#include。4.使用-S选项,执行编译处理工作。使用命令gcc-Shello.i-ohello.s对hello.i进行编译,生成汇编文件hello.s。要求截图:第4页共4页数计学院嵌入式操作系统实验报告使用命令cathello.s查看hello.s文件的内容,可以看到原来的c语言代

6、码已被转化为汇编代码。5.使用-c选项,执行编译工作。使用命令gcc-chello.s-ohello.o对hello.s进行汇编,生成目标文件hello.o。要求截图:6.使用命令gcchello.o-ohello将hello.o链接库,生成可执行文件hello,并使用命令./hello来执行。要求截图:以上四个步骤就对应了gcc执行过程的四个基本步骤,下面我们来看看gcc其他一些重要的选项。7.使用-static选项,静态链接库。使用命令gcchello.c-ohello和gcchello.c-o-st

7、atichello1分别生成两个可执行文件hello和hello1。第一个文件hello是不加-static选项,默认是链接动态库生成的,利用命令ls–l(注l是小字字母l)比较链接动态库生成的文件hello和链接静态库生成的文件hello1的大小。要求截图:8.使用-g选项,在可执行程序中包含标准调试信息。使用命令gcc-ghello.c-ohello2生成包含调试信息的文件hello2,带有调试信息的可执行文件可以使用gdb调试器进行调试。要求截图:9.使用-D选项,在编译时进行宏定义。使用命令第4页

8、共4页数计学院嵌入式操作系统实验报告gcc-DLINUXhello.c-ohello3生成定义了宏LINUX的的可执行文件hello3,将hello3和原可执行文件hello分别用命令./hello和./hello3执行,比较运行结果。要求截图:l总结:Gcc的选项有很多,但用得最多的是以上几个,要熟练运用,这对嵌入式编程有重要的意义,其他选项在实践中理解。第4页共4页

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

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

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