c语言多文件程序的编译和连接实验报告,实验报告三 GCC编译程序

《实验报告三 GCC编译程序》由会员分享,可在线阅读,更多相关《实验报告三 GCC编译程序(4页珍藏版)》请在人人文库网上搜索。

1、实验三 GCC编译程序班级 嵌入班 姓名 0罗航 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+。之后也变得可处理 Fortran、Pascal、Objective-C、Jav。

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

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

4、llo.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 中包含的内容替换掉了原先代码中的#include 。4. 使用-S 选项,执行编译。

5、处理工作。使用命令 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 链接库,生成可执行文件 hello,并使用命令./hello来执行。要求截图:以上四个步骤就对应了 。

6、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 分别用命令./hello和./hello3执行,比较运行结果。要求截图:l 总结:Gcc的选项有很多,但用得最多的是以上几个,要熟练运用,这对嵌入式编程有重要的意义,其他选项在实践中理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值