实验报告三-GCC编译程序_第1页
实验报告三-GCC编译程序_第2页
实验报告三-GCC编译程序_第3页
实验报告三-GCC编译程序_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、。接着调用 cc1 进行编译,这个阶段根据输入文件生成以.o 为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用 as 进行工作,一般来讲,.S 为后缀的汇编语言源代码文件和汇编、.s 为后缀的汇编语言文件经过预编译和汇编之后都生成以.o 为后缀的目标文件。当所有的目标文件都生成之后,gcc 就调用 ld 来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的库中连到合适的地方。 l 实验步骤:1. 先用 vi 编辑 hello.c 文件,内容如图所示。2. gcc 命令的一般格式为:gcc 选项 要编

4、译的文件 选项目标文件。 下面使用命令 gcc hello.c o hello,编译 hello.c,并生成可执行文件 hello,并使用命令./hello来执行。要求截图:注意: 上面的命令将.c文件生成了可执行文件,实际上是将预处理、编译、汇编、连接一步完成,下面我们将介绍四个流程分别做了什么工作。3. 使用-E 选项,执行预处理工作。使用命令 gcc -E hello.c -o hello.i 对 hello.c 进行预处理,生成文件 hello.i。要求截图:使用命令 cat hello.i 查看 hello.i 文件的内容,可以看到头文件stdio.h 中包含的内容替换掉了原先代码中

5、的#include <stdio.h>。4. 使用-S 选项,执行编译处理工作。使用命令 gcc -S hello.i -o hello.s 对 hello.i进行编译,生成汇编文件 hello.s。要求截图:使用命令 cat hello.s 查看 hello.s 文件的内容,可以看到原来的c 语言代码已被转化为汇编代码。5. 使用-c 选项,执行编译工作。使用命令 gcc -c hello.s -o hello.o 对 hello.s 进行汇编,生成目标文件 hello.o。要求截图:6. 使用命令 gcc hello.o -o hello 将 hello.o 链接库,生成可执行

6、文件 hello,并使用命令./hello来执行。要求截图:以上四个步骤就对应了 gcc 执行过程的四个基本步骤,下面我们来看看 gcc其他一些重要的选项。7. 使用-static 选项,静态链接库。使用命令 gcc hello.c -o hello 和 gcc hello.c -o -static hello1 分别生成两个可执行文件 hello和 hello1。第一个文件 hello 是不加-static 选项,默认是链接动态库生成的,利用命令ls l(注l是小字字母l)比较链接动态库生成的文件 hello 和链接静态库生成的文件 hello1 的大小。要求截图:8. 使用-g 选项,在可执行程序中包含标准调试信息。使用命令 gcc -g hello.c -o hello2 生成包含调试信息的文件 hello2,带有调试信息的可执行文件可以使用 gdb 调试器进行调试。要求截图:9. 使用-D 选项,在编译时进行宏定义。使用命令 gcc -DLINUX hello.c -o hello3生成定义了宏 LINUX 的的可执行文件 hello3, 将 hello3 和原可执行文件 hello

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论