Linu系统编程实验gccgdb的使用以及Makefile文件的编写

合集下载

Linu 系统编程实验gccgdb的使用以及Makefile文件的编写

Linu 系统编程实验gccgdb的使用以及Makefile文件的编写

实验二:gcc、gdb、Makefile的使用

●实验目的:

(一)学会使用gcc编译器

(二)学会gdb调试器的使用

(三)学会编写Makefile

●实验要求:

(一)编写一应用程序,使用gcc进行编译,并分别使用-o,-g,-static,-O2等选项(二)编写一应用程序,使用gdb调试,调试中使用到该小节所介绍的所有命令

(三)实现一应用程序,该程序有两个c文件构成,使用makefile来完成对该程序的编译●实验器材:

软件:安装了Linux的vmware虚拟机

硬件:PC机一台

●实验步骤:

(一)gcc编译器

1、先用vi编辑hello.c文件,内容如下:

2、gcc指令的一般格式为:gcc [选项] 要编译的文件 [选项] [目标文件]

例:使用gcc编译命令,编译hello.c生成可执行文件hello,并运行hello

上面的命令一步由.c文件生成了可执行文件,将gcc的四个编译流程:预处理、编译、汇编、连接一步完成,下面将介绍四个流程分别做了什么工作

3、-E选项的作用:只进行预处理,不做其他处理。

例:只对hello.c文件进行预处理,生成文件hello.i,并查看

通过查看可以看到头文件包含部分代码#include <stdio.h>经过预处理阶段之后,编译器已将stdio.h的内容贴了进来。

4、-S选项的使用

-S选项的作用:只是编译不汇编,生成汇编代码

例:将hello.i文件只进行编译而不进行汇编,生成汇编代码hello.s

5、-c选项的使用

-c选项的作用:只是编译不连接,生成目标文件.o

实验五 Linux gcc

实验五 Linux gcc

实验五Linux gcc、gdb编程

【实验目的】

通过这个实验使学生可以初步掌握Linux环境下用GCC进行C、C++语言的编程,并且用GDB进行程序的调试运行。

【实验学时】

6学时

【实验类型】

验证型

【实验要求】

1.了解什么是GNU计划及其意义

2.熟悉各种GNU计划实用程序

3.熟悉GCC编译器的用法和执行过程

4.了解多文件项目

5.熟悉makefile的结构

6.熟悉gdb调试程序

【实验原理】

GCC是GNU C Compiler的缩写,是GNU/Linux下最好的编译器之一。这个编译器稳定,而且文档齐全,大部分的自由软件都是用他编译的。如果使用C,那么就可以选择GCC。本节主要介绍这种编译器的基本原理和使用方法,以及编译过程中所产生的错误的原因及对策。

Linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。GCC是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

【实验步骤】

虽然称GCC是C语言的编译器,但使用GCC由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而且要经历4个相互关联的步骤:预处理(也称预编译,preprocessing)、编译(compilation)、汇编(assembly)和连接(linking)。

一、GCC的基本用法和选项

在使用GCC编译器的时候,必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数可能根本就用不到,这里只介绍其中最基本、最常用的参数。gcc的使用格式如下:

实验五LinuxC开发环境gcc编译和make项目管理

实验五LinuxC开发环境gcc编译和make项目管理

实验五LinuxC开发环境gcc编译和make项目管理

实验五Linux/C开发环境gcc编译和make项目管理

实验目的

使学生进熟悉GNU下C开发工具的使用方法,加深对所学知识的理解。

实验内容

要求学生掌握以下内容

(1) gcc编译链接工具的使用

(2) make工具的使用

(3) 理解make的工作原理

实验步骤

1. 编译链接器(gcc)

用编辑器vi编辑一下C源代码

#include

int count =20;

int main(void)

{

int k;

int sum=0;

#ifdef DEBUG

printf("runing in debug mode\n");

#else

printf(" runing in no debug mode\n");

#endif

for(k=0;k<count;k++)< bdsfid="86" p=""></count;k++)<> sum=sum+k;

printf("the sum is%d\n",sum);

}

将上述C代码保存至文件examm1.c,利用gcc生成执行文件

$ gcc -o exam1 exame1.c //编译链接成可执行程序exam1

$ ./exame1 //执行改程序

2. GNU make项目管理

在大型软件开发过程中,通常将系统分解为若干个模块,每个模块对应一个C源代码文件,由开发人员编写各自的模块,进过调试和单元测试后,最终将这些模块进行组装,生成最终的可执行程序或者函数库。

GNU make工具可很好地帮组我们完成这项工作。

linux C- gdb调试、Makefile

linux C- gdb调试、Makefile

linux C-gdb调试、Makefile

gcc可以编译c, c++, object-c, java等众多的语言程序

g++则是专注于C和C++。

gdb调试

GDB 调试器是一个功能强大的工具,它可以做很多的调试工作,如断点,单步跟踪等。相关命令:

下面演示两个例子,追踪快速排序的过程和查看优化后的gcd()算法(方法来自编程之美)

观察快速排序:

打印数组,查看快速排序中各个元素的位置变化

源码:

#include

#include

using namespace std;

int partion(int a[],int start,int end){

int i=start,j=end;

int temp=a[start];

while(i

while(i=temp) j--;

a[i]=a[j]; // i are more

while(i

a[j]=a[i]; // j are more

}

a[i]=temp; // at end , i=j

return i;

}

void Qsort(int a[],int start,int end){

if(start

int d=partion(a,start,end);

Qsort(a,start,d);

Qsort(a,d+1,end);

}

}

int main(){

int a[10]={3,2,7,5,1,0,9,6,4,11};

Qsort(a,0,9);

for(int i=0;i<10;i++)

printf("%d ",a[i]);

printf("\n");

return 0;

linux教程 实验指导书

linux教程 实验指导书

实验1 RedHat Linux常用命令使用

【实验目的】

1、了解linux的基本命令,熟练掌握其基本操作;

2、掌握一些常用的Linux命令的使用方法。

【实验要求】

1、了解RedHat Linux获得的方法以及怎样在虚拟机上进行安装;

2、复习一些常用Linux命令的使用方法,掌握其功能和使用时的选项和参数。

【实验步骤】

一、RedHat Enterprise Linux 4的启动

启动VMWare虚拟机,即可看到Linux的启动画面,实验室的root密码统一设定为123456。

二、常用的Linux命令使用

启动到Linux界面以后,在桌面上右键打开终端,即可进入命令输入的终端界面。

请在实验过程中输入正确的命令和选项参数,完成以下功能:

1:创建自己的账户(如:test)和口令。

2:使用新创建的用户账户和口令登录Linux系统,察看登录后的界面。

3:使用pwd命令察看当前的工作目录,然后用ls命令查看当前目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。

4:在当前目录下建立一个名为test的新目录,然后将工作目录切换到test下,尝试将/etc 目录下的文件passwd拷贝到该目录下(cp源文件目的目录)。察看当前目录下的passwd 文件的属主和文件权限。

5:尝试向当前目录下的passwd文件和/etc/passwd文件分别写入一些新内容(可使用echo "字符串" >>文件的命令),看看操作能否成功,如果不能成功,请说明原因。用cat命令浏览文件password的内容,用more命令进行浏览翻页操作,再用less命令浏览文件的内容。比较这几个命令的不同之处

实验5:Linux编程环境 gcc与make

实验5:Linux编程环境 gcc与make

实验五:Linux编程环境gcc与make

1实验目的

通过实验掌握Linux中的gcc 和make

2实验设备

硬件:PC机一台

软件:Windows98/XP/2000系统,VMware Workstation6.0,Red Hat Linux 3实验内容

(1)L inux命令gcc和make

4实验预习要求

仔细阅读参考书:

【1】鸟哥的Linux私房菜基础学习篇第三版,人民邮电出版社,鸟哥【2】嵌入式Linux系统开发标准教程,人民邮电出版社,华清远见嵌入式培训中心

【3】嵌入式Linux应用程序开发标准教程,人民邮电出版社,华清远见嵌入式培训中心

关于Linux编程环境部分。

5实验步骤

(1)熟悉Red Hat Enterprise Linux系统。

(2)根据实验重点内容测试。

6实验重点:

gcc的用法

(1)简单的示例程序

示例程序hello.c 见gcc example-hello

在默认的状态下,如果直接以gcc 编译源代码,并且没有加上任何参数,则执行文件的文件名会被自动设置为 a.out 这个文件名!所以能够直接执行./a.out 这个可执行文件!如果想要产生目标文件(object file) 来进行其他的操作,而且可执行文件的文件名也不要用默认的 a.out ,步骤:

[root@www ~]# gcc -c hello.c

[root@www ~]# ll hello*

-rw-r--r-- 1 root root 72 Jun 5 02:40 hello.c

-rw-r--r-- 1 root root 868 Jun 5 02:44 hello.o <==就是被生成的目标文件

Linux编程GCC命令Makefile文件编写

Linux编程GCC命令Makefile文件编写
他可以处理C、C++、Fortan、Pascal、Objective-C、 Java、Ada等。
简介
2/4
• 在该阶段,编译器分析处理源代码文件中的各种宏指令,如#
预处理 include,#if等。
• 在该阶段,GCC首先要检查代码的规范性、是否有语法错误等,
编译 在检查无误后,GCC把代码翻译为汇编语言。
推荐资料
《LinuxC》 资源网站:
ftp://lighteyes.scu.edu.cn
目录
Linux编程概述 GCC Makefile 课程实践
目录
Linux编程概述 GCC Makefile 课程实践
Linux编程概述
Linux的编程语言 开发过程 Linux开发工具
依赖是用来输入从而产生目标的文件,一个 目标经常有几个依赖。
命令是Make执行的动作,一个规则可以含有 几个命令,每个命令占一行。
每个命令行前面必须是一个Tab字符,即命令 行第一个字符是Tab。这是不小心容易出错的 地方。
实例分析
Eample1
编译一个文件的makefile文件 $cat makefile
简介 基本规则 常用参数 实例分析
简介
1/3
GCC概述
gcc是一个强大的工具集合,它包含了预处理器,编译 器,汇编器,链接器等组件。它会在需要的时候调用 其他组件。输入文件的类型和传递给gcc的参数决定了 gcc调用具体的哪些组件。对于开发者,它提供的足够 多的参数,可以让开发者全面控制代码的生成,这对 嵌入式系统级的软件开发非常重要

《Linux操作系统》实验十-UNIX gcc编译器的使用与编程环境

《Linux操作系统》实验十-UNIX gcc编译器的使用与编程环境

《Linux操作系统》

实验报告

实验十:UNIX gcc编译器的使

用与编程环境

一、实验目的

(1)掌握gcc和g++的用法;

(2)了解目标代码、库函数的使用;

(3)掌握静态库和共享库的构造与使用;

(4)掌握多模块和多语言联合开发方法;

(5)掌握make命令和Makefile文件的使用。

二、实验环境

一台装有Windows操作系统PC机,上装有虚拟机系统VMWare,实验过程通过VMWare系统启Linux系统工作。

三、实验内容与实验过程及分析

一、C/C++编程

1、C语言版“Hello World”

用vi编辑一个名为hello.c的文件,其内容为

#include <stdio.h>

main()

{

printf(”Hello World! C\n”);

}

编译并执行程序。

编译方法为:

cc hello.c // 生成可执行程序 a.out

cc –o hello hello.c // 生成可执行程序hello

cc –c hello.c //生成目标文件hello.o

cc –S hello.c //生成汇编语言程序hello.s

执行程序:

./a.out #执行当前目录内,刚编译生成的a.out程序

./hello #执行当前目录内,刚编译生成的hello程序

2、组合编程

设有C语言文件f1.c,内容为:

#include <stdio.h>

f1(int arg){

printf(”f1: you passed %d\n”,arg);

}

C语言文件f2.c。内容为:

#include <stdio.h>

Linux下GCC和Makefile实例

Linux下GCC和Makefile实例

Linux 下GCC 与Makefile 实例(从GCC 得编译到Makef 订e 得引入)

2011/10/29 by crazyant 4 ments

一、确认已经装好了 GCC 与Make 得软件包

可以使用whereis 命令査瞧:

V 1

文件(£) 編轉(⑥ 査看Q9 终端(1) 转到(0 帮助CW

[xduser@locaLhost xduser]$ su

Password: ______________

[root@localhost xduser] fl whereis gcc gcc: /usr/bin/gcc /usr/share/man/manl/gcc. 1 .gz

[root®localhost xduser]# | whereis make —

make: /usr/bin/make /usr/share/man/manl/make.1.gz [root®localhost xduser]#

如果whereis gcc *j whereis make 命令有结果,说明安装了这两个软件/可以继续往下做。 二、使用GCC

编译运行一个HelioWorld 程序(只涉及单个文件) 可以在任何一个U 录编写C 程序然后编译

运行,我这个实例在自己主U 录进行:

■ niM _ I

■dr

义dyse 働ocgitxzsh

文件(£)编辑⑥ 査看QL)终猛① 转到(Q 帮助但)[xduser@localhost xduser]$ vim hello.cl

使用vi礎立_me程序,以.c结尾

然后就进入了编写程序得界面:

Linux系统Makefile编写与GCC编译实验报告

Linux系统Makefile编写与GCC编译实验报告

实验报告

实验题目

Linux系统Makefile编写与GCC编译实验姓名:

学号:

课程名称:

所在学院:

专业班级:

任课教师:

四、实验过程、步骤及内容

(一)GCC编译

1、准备环境

2、建立相关目录

$ cd workdir/linux/application

$ mkdir 6-gcc

3、将代码从共享目录拷入虚拟机L inux 操作系统下;(可使用【crtl+空格】切换输入法)

$ cp /mnt/hgfs/share/实验代码/03.\ Linux 系统GCC 编译器的使用实验/实验代码/* 6-gcc/ -a

$ cd 6-gcc/

4、编译代码

$ arm-none-linux-gnueabi-gcc helloworld.c -o hello

$ mkdir /source/rootfs/app

$ cp hello /source/rootfs/app/

5、执行代码

通过tftp 下载内核,nfs 挂载文件系统,启动开发板。在开发板串口终端执行应用程序。

# cd /app

# ./hello

6、相关代码:

#include <stdio.h>

int main (int argc,char **argv)

{

printf("hello,world!\n");

return 0;

}

(二)Makefile编程

1、环境准备

2、建立相关目录

$ cd workdir/linux/application

$ mkdir 7-Makefile

3、将代码从共享目录拷入虚拟机L inux 操作系统下;(可使用【crtl+空格】切换输入法)

《Linux网络操作系统》课件——项目九--使用gcc和make-调试程序

《Linux网络操作系统》课件——项目九--使用gcc和make-调试程序
1.编辑程序代码即源码
[root@RHEL7-2 ~]# vim hello.c <==用 C 语言写的程序扩展名建议用.c#include <stdio.h>int main(void){ printf("Hello World\n");
上面是用C语言的语法写成的一个程序文件。第一行的那个“#”并不是注解。
9.1.3 子任务3 逻辑错误和语义错误
5
任务2 使用传统程序语言进行编译
Linux操作系统作为一个免费、自由、开放的操作系统,它拥有如下所述的一些特点。
经过上面的介绍之后,你应该比较清楚地知道原始码、编译器、函数库与运行文件之间的相关性了。不过,详细的流程可能还不是很清楚,所以,在这里我们以一个简单的程序范例来说明整个编译的过程!赶紧进入Linux系统,实际操作一下下面的范例吧!
项目九 使用gcc和make 调试程序
项目九 使用gcc和make 调试程序
编译器只能翻译语法正确的程序,否则将导致编译失败,无法生成可执行文件。对于自然语言来说,一点语法错误不是很严重的问题,因为我们仍然可以读懂句子。而编译器就没那么宽容了,哪怕只有一个很小的语法错误,编译器就会输出一条错误提示信息然后罢工,你就得不到你想要的结果。虽然大部分情况下编译器给出的错误提示信息就是你出错的代码行,但也有个别时候编译器给出的错误提示信息帮助不大,甚至会误导你。在开始学习编程的前几个星期,你可能会花大量的时间来纠正语法错误。等到有了一些经验之后,还是会犯这样的错误,不过会少得多,而且你能更快地发现错误原因。等到经验更丰富之后你就会觉得,语法错误是最简单最低级的错误,编译器的错误提示也就那么几种,即使错误提示是有误导的也能够立刻找出真正的错误原因是什么。相比下面两种错误,语法错误解决起来要容易得多。

Linux编程GCC命令Makefile文件编写教学教案

Linux编程GCC命令Makefile文件编写教学教案
支持多种编程语言
○ -C/C++/Fortan/JAVA……
可移植性强:主要采用C语言编写 交叉支持能力强
○ Build, host and target
处理器支持多
○ X86/ia/MIPS/ARM/SPARC/……
应用范围广
○ 高性能计算、商用服务器、PC、嵌入式系统
模块化设计
○ 前端+中间表示|后端,松耦合
动态库:链接时,动态库的代码不会被加 入可执行文件中,而是在程序被执行的时 候加载。
Linux开发工具
编辑工具
VI
编译工具
GCC
目录
Linux编程概述 GCC Makefile 课程实践
GCC
简介 基本规则 常用参数 实例分析
简介
1/3
GCC概述
gcc是一个强大的工具集合,它包含了预处理器,编译 器,汇编器,链接器等组件。它会在需要的时候调用 其他组件。输入文件的类型和传递给gcc的参数决定了 gcc调用具体的哪些组件。对于开发者,它提供的足够 多的参数,可以让开发者全面控制代码的生成,这对 嵌入式系统级的软件开发非常重要
他可以处理C、C++、Fortan、Pascal、Objective-C、 Java、Ada等。
简介
2/4
简介
3/4
GCC的历史

Linux终端中程序编译和调试命令的使用指南

Linux终端中程序编译和调试命令的使用指南

Linux终端中程序编译和调试命令的使用指

Linux终端是开发人员经常使用的工具之一,它提供了一系列强大

的命令来帮助编译和调试程序。本文将介绍一些常用的Linux终端命令,帮助读者更好地理解和应用。

一、编译命令

1. gcc命令

gcc是GNU编译器套件的一部分,用于编译C/C++程序。使用gcc

命令进行编译时,可以添加一些选项来控制编译的行为。例如,使用"-o"选项来指定输出文件名:

```

gcc -o output_file source_file.c

```

这将把source_file.c编译成可执行文件output_file。

2. make命令

make命令是一个用于管理程序编译的工具,它使用一个名为Makefile的文件来描述编译的过程。Makefile中包含了源代码文件之间

的依赖关系以及编译的规则。使用make命令时,只需要执行以下命令

即可:

```

make

```

make会自动读取Makefile文件并根据规则进行编译。这样可以更方便地管理大型项目的编译过程。

二、调试命令

1. gdb命令

gdb是GNU调试器的缩写,它用于调试C/C++程序。使用gdb命令可以单步执行程序、查看程序变量的值以及捕捉程序崩溃的信息等。以下是gdb的一些常用命令:

- "start":启动程序的执行。

- "run":重新启动程序的执行。

- "break file:line":在指定的文件和行号设置断点。

- "print variable":打印变量的值。

- "next":执行下一行代码。

- "step":进入函数并执行下一行代码。

Linux下gccgdbmake的详细使用文档

Linux下gccgdbmake的详细使用文档

www.itcast.cn
第2章 gdb
第一章中提到的,gcc编译选项-g,这样生成的目 标代码中就添加了调试信息。
–gcc -g –o hello hello.c
gdb完成的大部分工作都可以用很少的命令集合完 成。
hello.o: gcc -o hello.o -c hello.c target start后面的hello.o代表其下的command依赖与 hello.o这个target。所以make先执行了hello.o这个 target下的command。
www.itcast.cn
第三章 make
进一步完善的makefile,内容如下:
www.itcast.cn
第三章 make
用vi编辑一个简单的makefile,内容如下: start: gcc -o hello hello.c
输入make,makefile的内容执行了。
www.itcast.cn
第三章 make
稍微复杂的makefile,内容如下: start:hello.o gcc -o hello hello.o
–这行命令告诉gcc对源程序hello.o进行链接,生成可执 行程序hello。
www.itcast.cn
第1章 gcc常用选项
-o filename -c -E -S -g -I -D -L -l -O -w -Wall -Werror -static -fPIC -shared

Linux程序设计基础—C环境(gcc gdb makefile)

Linux程序设计基础—C环境(gcc gdb makefile)

© 2006 博创科技
博创科技 嵌入互动
命令模式
2、删除 x 删除光标所在字符 X 删除光标前面的字符 s 删除光标所在字符,并进入输入模式 S 删除光标所在的行,并进入输入模式 dd 删除光标所在的行 D 从光标位置开始删除到行尾 d与光标移动命令的组合
© 2006 博创ຫໍສະໝຸດ Baidu技
博创科技 嵌入互动
博创科技 嵌入互动
命令模式
4、复制和移动 yy 复制当前行到内存缓冲区 nyy 复制 n 行内容到内存缓冲区 y与光标移动的组合 p 将缓冲区的内容粘贴到光标的后面 P 将缓冲区的内容粘贴到光标的前面 另:在末行模式下实现移动 :n1,n2 m n3 : 把 n1到n2 行内容搬到第 n3 行后
© 2006 博创科技
© 2006 博创科技
博创科技 嵌入互动
GNU风格 (2/2)
当一个if中嵌套了另一个if-else时,应用花括号把if-else括起来。 要在同一个声明中同时说明结构标识和变量或者结构标识和类型定义 (typedef)。先定义变量,再使用。 尽量避免在if的条件中进行赋值。 请在名字中使用下划线以分割单词,尽量使用小写;把大写字母留给宏和 枚举常量,以及根据统一惯例使用的前缀。例如,应该使用类似 ignore_space_change_flag的名字;不要使用类似iCantReadThis的名字。 用于表明一个命令行选项是否给出的变量应该在选项含义的说明之后,而 不是选项字符之后被命名。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二:gcc 、gdb 、Makefile 的使用

实验目的:

(一) 学会使用gcc 编译器 (二) 学会gdb 调试器的使用 (三) 学会编写 Makefile

实验要求:

(一)

编写一应用程序,使用 gcc 进行编译,并分别使用-o ,-g ,-static ,-02等选项 (二) 编写一应用程序,使用 gdb 调试,调试中使用到该小节所介绍的所

有命令

(三)

实现一应用程序,该程序有两个 c 文件构成,使用

makefile 来完成对该程序的编译

实验器材:

软件:安装了 Linux 的vmware 虚拟机 硬件:PC 机一台

实验步骤:

(一) gcc 编译器

1先用vi 编辑hello.c 文件,内容如下:

#include int main(void) {

priritf("hello world\n"); return 0;

}

2、gcc 指令的一般格式为:gcc [选项]要编译的文件[选项][目标文件]

例:使用gcc 编译命令,编译 hello.c

生成可执行文件 hello ,并运行hello

gcc]# vi hello ・ c

gcc]# gcc hello.c -o hello gcc]# ./hello

上面的命令一步由.c 文件生成了可执行文件,将 gcc 的四个编译

流程:预处理、编译、 汇编、连接一步完成,下面将介绍四个流程分别做了什么工作 3、 -E 选项的作用:只进行预处理,不做其他处理。

例:只对hello.c 文件进行预处理,生成文件 hello.i ,并查看

[root@locdlhost gcc ]# gcc -E hello •匚-o hello * i [root (alocalhost gcc ]# Is hello hel lo.c: hel lo.i

通过查看可以看到头文件包含部分代码 #include 经过预处理阶段之后,编译 器已将stdio.h 的内容贴了进来。 4、 -S 选项的使用

-S 选项的作用:只是编译不汇编,生成汇编代码

[root@localhost [root@localhost [root@localho5t hello world [rootglocalhost

gcc]#

例:将hello.i

文件只进行编译而不进行汇编,生成汇编代码 hello.s

[root^localhost

[rootglocalhost nello hello* c

[root^localhost

gcc]# gcc -S hello.i -o hello.s gcc]# Is hello.i hello,s gcc]# |

5、-c 选项的使用 -c 选项的作用:只是编译不连接,生成目标文件 .0 例:将汇编代码hello.s 只编译不链接成 hello.o 文件 [root (alocalhost gcc]# gcc - c hello . s -o hello [root (alocalhost gcc]# Is

hello hello.c hello.i hello.o hello.s

6、将编译好的hello.o 链接库,生成可执行文件 hello

[root (alocalhost [root (alocalhost hello hello.c [root (alocalhost hello world

gcc]# gcc hello ・o -o hello gcc]# Is hello.i hello.o hello.s gcc]# ・/hello

7、-static 选项的使用 -static 选项的作用:链接静态库 例:比较hello.c 连接动态库生成的可执行文件 hellol 的大小 hello 和链接静态库生成的可执行文件

-rwxr- xr x 1 root root 4641 J un

1

03:47 hello -rwxr- xr-x 1 root root 605990 Jun 1 03:47 hellol -rw - r ■ ■「 ________________ 1 root root 75 J un 1 03:15 hello,c -rw -厂.

1 root

root 18880 J un 1 B3:27 hello.i -rw - r- ■ ■「八

1 「oot root 844 J un 1 03:41 hello^o -rw - r- --IP -- 1 root

root 416 J un 1 03:35 hello.s

[root@localhost gcc]# gcc hello.c -o hello

[root@localhost gcc]# gcc -static hello .匚-o hellol [root@localhost gcc]# ll total 636

可以看到静态链接库的可执行文件 hellol 比动态链接库的可执行文件

hello 要大的多,

他们的执行效果是一样的

8、-g 选项的使用 -g 选项的作用:在可执行程序中包含标准调试信息 例:将hello.c 编译成包含标准调试信息的可执行文件 hello2

2、将test.c 文件编译成包含标准调试信息的文件 test

gcc]# gcc -g hello.c -o hello2 gcc]# Is

hello.i hell O .E

hello »o

带有标准调试信息的

可执行文件可以使用

9、-02选项的使用

gdb 调试器进行调试,以便找出逻辑错误

-02选项的作用:完成程序的优化工作

例:将hello.c 用02优化选项编译成可执行文件 hello3,和正常编译产生的可执行文

件hello 进行比较

gcc]# gcc -02 hEllo.c -o hello3 gcc]# Is hello .c hello .o hello .i hello .s gcc]# ./lhello qcc]# ./Ihello3 (二) gdb 调试器

1先用vi 编辑文件test.c 用于gdb 调试器调试,内容如下

[root^localhost

[root@localhost hello hello2 hellol hello.c [root (alocalhos t [root@localhost hello hello2 hellol hello3 [root (alocalhost hello world

[root (alocalhost hello world

相关文档
最新文档