Linux学习笔记(8)——gcc的使用与开发(2)

gcc的使用(2)

基本使用格式

$ gcc  [选项]  <文件名>

1.常用选项及含义

gcc常用选项

选项

含义

-o file

将经过gcc处理过的结果存放为文件file,这个结果文件可能是预处理文件、汇编文件、目标文件或最终的可执行文件。假设被处理的源文件为source.suffix,如果这个选项被省略了,那么生成的可执行文件默认名为a.out;目标文件默认名为source.o;汇编文件默认名为source.s;生成的预处理文件则发送到标准输出设备。

-c

仅对源文件进行编译,不链接生成可执行文件。在对源文件进行查错时,或只需产生目标文件时可以使用该选项

-g[gdb]

在可执行文件中加入调试信息,方便进行程序的调试。如果使用中括号中的选项,表示加入gdb扩展的调试信息,方便使用gdb进行调试

-O[0、1、2、3]

对生成的代码使用优化,中括号中的部分为优化级别,缺省的情况为2级优化,0为不进行优化。注意,采用更高级的优化并不一定得到效率更高的代码。

-Dname[=definition]

将名为name的宏定义definition,如果中括号中的部分缺省,则宏被定义为1

-Idir

在编译源程序时增加一个搜索头文件的额外目录—dir,即include增加一个搜索的额外目录。

-Ldir

在编译链接文件时增加一个额外的库,库名为library.a

-w

禁止所有警告

-Wwarning

允许产生warning类型的警告,warning可以是:main、unused等很多取值,最常用是-Wall,表示产生所有警告。如果warning取值为error,其含义是将所有警告作为错误(error),即出现警告就停止编译。

2.多文件的C程序

在实际开发中,为了使代码结构更合理且更方便进行代码的重用,通常采用将主函数和其它函数放在不同文件中的方法。除了主程序外,每个函数由函数声明(函数头)和函数实现(函数体)两部分组成。函数的声明一般放在头文件(.h)中,而函数的定义放在实现的文件(.c、.cpp)中。

例:

1.先创建多个C程序

Linux学习笔记(8)——gcc的使用与开发(2)_第1张图片用vi 编辑器 编辑C程序

  greeting.h

Linux学习笔记(8)——gcc的使用与开发(2)_第2张图片 greeting.c

Linux学习笔记(8)——gcc的使用与开发(2)_第3张图片my_app.c

2.执行文件

如果还是使用之前介绍的命令,直接编译my_app.c来生成可执行文件,gcc会出现错误:

(错误信息可能会因为系统的不同而稍有差异。产生错误的原因是gcc没有找到greeting.h)

正确的编译运行步骤:

方法1

1.编译生成可执行文件

2.执行可执行文件 my_app

3.运行结果:输入:123 输出:Hello 123!

(由上面创建c程序文件可以看出程序存储的目录结构。由于文件my_app.c引用的头文件既不在当前目录中,也不在GCC默认的头文件搜索路径(/usr/include)中,因此增加了-I参数functions,该参数作为一个目录路径,gcc将在functions目录下搜索头文件(greeting.h)。程序生成的可执行文件为当前工作目录下的my_app文件)

方法2

除此之外,还可以将上面的命令调用方式分解为几个步骤进行。与上面的一次性调用相比,这种方法虽然没有本质改变,但也是经常采用的方式之一,它可以简化每一条命令,从而更好地组织代码,命令如下:

 

通过分块进行编译,将一个大的项目转化为多个小的部分,能提高软件调试和维护的效率。

你可能感兴趣的:(Linux学习笔记)