gcc 编译 -unknown-linux-gnu,GCC 程序编译的举例使用(常用指令)

本文详细介绍了Linux系统中GCC(GNU C Compiler)的使用,包括其作为多平台编译器的优势、不同文件后缀的意义以及编译过程的四个阶段:预处理、编译、汇编和链接。通过实例演示了如何使用gcc命令进行编译、指定输出文件、生成调试信息、代码优化等操作,并解释了相关选项如`-c`、`-g`、`-O`和`-Wall`的作用。此外,还提到了预处理文件和目标文件的生成。
摘要由CSDN通过智能技术生成

Linux 系统下

gcc 的使用说明

Linux 系统下的gcc (GNU C Compiler)是GNU 推出的功能强大、性能优越的多平台编辑器,是GNU的代表作之一。

gcc 可以在多种硬件平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%~30%。

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

在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。

Gcc通过后缀来区别输入文件的类别: 1 .c为后缀的文件: C语言源代码文件 2  .a为后缀的文件:

是由目标文件构成的库文件 3 .C,.cc或.cxx为后缀的文件: 是C++源代码文件 4  .h为后缀的文件: 头文件 5 .i

为后缀的文件:是已经预处理过的C源代码文件 6 .ii为后缀的文件:是已经预处理过的C++源代码文件 7 .o为后缀的文件: 是编译后的目标文件 8 .s为后缀的文件:

是汇编语言源代码文件 9 .S为后缀的文件: 是经过预编译的汇编语言源代码文件。

使用GCC编译程序时,编译过程可以被细分为四个阶段: 1、预处理(Pre-Processing) 2、编译(Compiling) 3、汇编(Assembling) 4、链接(Linking)

以上为介绍GCC的一些基础概念,下来我们拿一事例进行详细的说明:

我们还是从经典的代码

hello.c 开始

原程序为:

#include

int main(void) { printf (Hello

world!\n); return

0; }

1.编译和运行这段程序:

# gcc hello.c

#

./a.out 输出:Hello world!

由此可知 gcc 的基本用法为:

gcc [options] [filenames] options:编译器所需要的编译选项 filenames: 要编译的文件名。

上例中省去了options 项,经过编译输出 a.out 文件,说明

gcc 在编译一个代码时默认输出为:a.out 文件,但是当编译的代码比较多的时候,这种方法不容易区别。

2. -o output_filename:确定可执行文件的名称为output_filename。如果不给出这个选项,

gcc就给出预设的可执行文件a.out。

# gcc hello.c -o hello

# ./hello

输出为:hello world!

由此可知输出的文件名字为:hello ,同时可以明白

“-o”指令是让

系统输出一个指定名称的可执行文件。

3. -c:只编译,不连接成为可执行文件,编译器只是由输入的.c等

源代码文件生成.o为后缀的目标文件。

# gcc -c hello.c

# 运行后生成 hello.o 目标文件

4. -g:产生调试工具(GNU的gdb)所必要的调试信息,要想对编译出

的程序进行调试,就必须加入这个选项。

# gcc -g hello.c -o

hello

# gdb hello

此时生成的 hello 文件即包含调试所需的信息,通过 gdb

可以进行

像单片机中 KEIL

软件一样的调试代码,验证代码。

5. -O:(注意这里是零)对程序进行优化编译、链接,采用这个选

项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可

执行文件的执行效率可

以提高,但是,编译、连接的速度就相应地要

慢一些。

# gcc

hello.c -o hello

# time

./hello

a4c26d1e5885305701be709a3d33442f.png

# gcc -0

hello.c -hello

# time

./hello

a4c26d1e5885305701be709a3d33442f.png

#gcc -02

hello.c -o hello

# time

./hello

a4c26d1e5885305701be709a3d33442f.png

由此可知,指令“-0”和“-02”为代码优化指令,可以减少编译的时间。

6. -Wall:生成所有警告信息

# gcc -Wall hello.c -o

hello

运行后会把所有的警告信息列出。

7.-w:不生成任何警告信息

# gcc -w hello.c -o

hello

运行后不显示任何的警告信息

8. -DMACRO: 定义

MACRO

宏,等效于在程序中用 #define MACRO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值