【Linux学习】GCC学习

来源:互联网 发布:eosinfo软件 编辑:程序博客网 时间:2024/05/22 03:29

(1)GCC简介

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

GCC编译器能将C,C++语言源程序、汇编程序编译、链接成可执行文件。

使用GCC编译程序时,编译过程可以被细分为四个阶段:预处理、编译、汇编、链接。

(2)基本用法

GCC最基本的用法是:

gcc [options]  [filenames]

options:编译器所需要的编译选项

filenames:要编译的文件名

(3)最常用的参数

-o   output_filename:确定可执行文件的名称为output_filename.如果不给出这个选项,gcc就给出预设的可执行文件a.out.

-c   只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。

-g   产生调试工具(GNU的gdb)所必要的符号信息,想要对编译出的程序进行调试,就必须加这个选项

-O(大写字母)对程序进行优化编译,链接,采用这个选项,整个源代码会在编译链接过程中进行优化处理,这样产生的可执行文件效率可以提高。但是,编译,链接的速度就相应地要慢些 

-O2 比-O更好的优化编译链接,整个编译、链接会变慢

-I dirname  将dirname所指出的目录加入到程序头文件目录列表中。

  gcc file.c -I/home/include -o file  将目录/home/include加入到程序的头文件列表中

注:C程序中的头文件存在两种:#include <stdio.h>    #include "cpp.h",对于<>,预处理程序cpp在系统预设的头文件目录中搜寻相应的文件;而对于“ ”,cpp在当前目录中搜寻头文件,这个选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。

-Ldirname:将dirname所指出的目录加入到库文件的目录列表中,在默认状态下,连接程序在系统中预设的路径中寻找所需要的库文件(如usr/lib)而这个选项告诉程序,首先到-L指定的目录下寻找,然后在到系统预设的路径中寻找。

-lname:在连接时,装载名字为libname.a的函数库,该函数库位于系统预设的目录或者有-L选项指定的目录下。例如:-lm表示连接名为libm.a的数字函数库。

例:gcc file.c -L/home/lib  -la -o file 在L指定的目录下装载liba.a的函数库

-static :静态连接库文件

-wall 生成所有警告信息

-D MACRO 定义MACRO宏,等效于在程序中使用# define MACRO 

 







0 0
原创粉丝点击