`

Linux下编程工具的使用(2) - GCC编译器

阅读更多

如何使用GCC编译器?

 

程序的编译过程

对于GUN编译器来说,程序的编译要经历预处理、编译、汇编、连接四个阶段,如下图所示:

 

     

 

从功能上分,预处理、编译、汇编是三个不同的阶段,但GCC的实际操作上,它可以把这三个步骤合并为一个步骤来执行。下面我们以C语言为例来谈一下不同阶段的输入和输出情况。

在预处理阶段,输入的是C语言的源文件, 通常为*.c。它们通常带有.h之类头文件的包含文件。这个阶段主要处理源文件中的#ifdef、 #include和#define命令。该阶段会生成一个中间文件*.i,但实际工作中通常不用专门生成这种文件,因为基本上用不到;若非要生成这种文件 不可,可以利用下面的示例命令:


gcc -E  test.c -o test.i

 

在编译阶段,输入的是中间文件*.i,编译后生成汇编语言文件*.s 。这个阶段对应的GCC命令如下所示:

 

GCC -S test.i -o test.s

 

在汇编阶段,将输入的汇编文件*.s转换成机器语言*.o。这个阶段对应的GCC命令如下所示:

 

GCC -c test.s -o test.o

 

最后,在连接阶段将输入的机器代码文件*.s(与其它的机器代码文件和库文件)汇集成一个可执行的二进制代码文件。这一步骤,可以利用下面的示例命令完成:

 

GCC test.o -o test

gcc使用样例

分步编译连接

编译:  gcc -c hello_gnome.c  -o hello_gnome.o -g -Wall `gnome-config --cflags gnome gnomeui`

连接: gcc hello_gnome.o -o hello_gnome `gnome-config --libs gnome gnomeui`

 

直接编译链接

编译连接: gcc hello_gnome.c -o hello_gnome -g -Wall `gnome-config --cflags gnome gnomeui` `gnome-config --libs gnome gnomeui`

 

gnome-config --cflags gnome gnomeui

-I/usr/include/gnome-1.0 -DNEED_GNOMESUPPORT_H -I/usr/lib/gnome-libs/include -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include

gnome-config --libs gnome gnomeui

-rdynamic -L/usr/lib -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgtk -lgdk -lgmodule -ldl -lXi -lXext -lX11 -lgnome -lgnomesupport -lesd -laudiofile -lm -ldb-4 -lglib

 

常用选项说明

-g                  : 编译调试信息 

-Wall            : 产生所有警告信息

-I                   : 头文件查找路径

-rdynamic   : 动态连接库文件

-L                  : 库文件查找路径

-l                   : 包含的库文件,例如,-lgtk  就会被解释为 /usr/lib/libgtk.a

 

编程相关的重要文件目录

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

 

(系统级别)存放启动系统时用到的二进制文件

/bin                                     

/sbin                                   : 只有系统管理员(super user)才能执行的程序

 

(用户级别)用于存放用户使用的标准程序

/usr/bin                               

/usr/sbin                             : 只有系统管理员(super user)才能执行的程序

 

存放特定软件安装的程序

/usr/local/bin

/usr/local/sbin                   : 只有系统管理员(super user)才能执行的程序

 

库路径

 

/lib

/usr/lib

/usr/local/lib

 

头文件路径

 

/usr/inlcude

/usr/include/sys

/usr/include/linux

分享到:
评论

相关推荐

    linux网络编程-宋敬彬-part2

    2.2 Linux下的GCC编译器工具集 19 2.2.1 GCC简介 19 2.2.2 编译程序的基本知识 21 2.2.3 单个文件编译成执行文件 22 2.2.4 编译生成目标文件 22 2.2.5 多文件编译 23 2.2.6 预处理 24 2.2.7 编译成...

    linux网络编程-宋敬彬-part3

    2.2 Linux下的GCC编译器工具集 19 2.2.1 GCC简介 19 2.2.2 编译程序的基本知识 21 2.2.3 单个文件编译成执行文件 22 2.2.4 编译生成目标文件 22 2.2.5 多文件编译 23 2.2.6 预处理 24 2.2.7 编译成...

    linux网络编程-宋敬彬-part1

    2.2 Linux下的GCC编译器工具集 19 2.2.1 GCC简介 19 2.2.2 编译程序的基本知识 21 2.2.3 单个文件编译成执行文件 22 2.2.4 编译生成目标文件 22 2.2.5 多文件编译 23 2.2.6 预处理 24 2.2.7 编译成...

    linux下GCC编译C程序

    GNU编译器集(其前身为GNU C编译器)诞生于1987年。...日益流行的脚本语言Perl、Python和Ruby,以及正在不断发展的mono 可移植C#实现的确有助于冲淡人们对Linux编程的传统看法,但这完全是另外一个问题了。

    西南科技大学+Linux实验报告+Linux环境下C语言编程

    2.基本掌握Linux字符模式下的编译工具和调试工具的使用 3.掌握自动编译工具make的使用和Makefile的编写方法 二、实验设计 1.GCC使用方法 2.调试器GDB使用方法(选做) 3.编译配置工具Make工具使用 4.Linuxer编译...

    gcc-4.1.0.tar.bz2

    GCC是一个用于linux系统下编程的编译器。

    Linux 下 C 语言编程

    本文的主旨是介绍如何在 Linux 下使用 C 编译器和 其他 C 编程工具, 而非 C 语言编程的教程. 在本文中你将学到以下知识: · 什么是 C · GNU C 编译器 · 用 gdb 来调试GCC应用程序 你也能看到随 Linux 发行的其他...

    Linux下c语言编程书籍资料

    资料分两部分:1、如何在Linux下安装和使用GUN C的编译器GCC; 2、Make程序维护工具

    Linux C编程从初学到精通 part2

    第一部分为基础篇,共有5章,主要讲解了Linux系统的概述、C语言编程基础、Linux下的两种常用文本编辑器vi和Emacs、程序编译器gcc和调试器gdb,以及make管理工具。第二部分为提高篇,共有7章,主要讲解了Linux系统下...

    LINUX C编程从初学到精通 张繁

    第一部分为基础篇,共有5章,主要讲解了Linux系统的概述、C语言编程基础、Linux下的两种常用文本编辑器vi和Emacs、程序编译器gcc和调试器gdb,以及make管理工具。第二部分为提高篇,共有7章,主要讲解了Linux系统下...

    精通LINUX下的C编程(配套光盘)第三部分

    2.4 编译器gcc的使用 2.5 LinuxC程序的开发过程 2.6 make工具及其使用 2.7 使用autoconf 2.8 使用automake 2.9 使用gdb调试程序 2.10 小结 习题 第3章 Linux下的文件编程 3.1 概述 .3.2 文件描述符 3.3 ...

    实验一 Linux系统用户接口和编程界面

    2.熟悉运用Linux常用的编程工具。 3.熟悉运用Linux的在线求助系统。 4.掌握在Linux操作系统环境上编辑、编译、调试、运行一个C语言程序的全过程。 实验要求 1.熟悉使用Linux字符界面、窗口系统的常用命令。 2....

    Linux系统下C语言编程工具详细介绍

    Linux的发行版中包含了很多软件开发工具。...本文的主旨是介绍如何在Linux下使用C编译器和其他C编程工具, 而非C语言编程的教程。在本文中你将学到以下知识: 什么是C、GNU C编译器、用gdb来调试GCC应用程序。

    精通LINUX下的C编程(配套光盘)第二部分

    2.4 编译器gcc的使用 2.5 LinuxC程序的开发过程 2.6 make工具及其使用 2.7 使用autoconf 2.8 使用automake 2.9 使用gdb调试程序 2.10 小结 习题 第3章 Linux下的文件编程 3.1 概述 .3.2 文件描述符 3.3 ...

    Linux C编程从初学到精通 part3

    第一部分为基础篇,共有5章,主要讲解了Linux系统的概述、C语言编程基础、Linux下的两种常用文本编辑器vi和Emacs、程序编译器gcc和调试器gdb,以及make管理工具。第二部分为提高篇,共有7章,主要讲解了Linux系统下...

    linux下的C语言编程PPT

    01:linux下的C语言编程 与gcc编译器 02:gdb 的使用 03:Shell编程的概念 04:Dialog 工具的使用 05:Make 06:进程 07:库的开发、调试和应用

    linux_命令_vim_shell_gcc_gdb_make

    1.linux vim使用 2.shell脚本编程 3.gcc编译器编译选项详细说明 4.gdb调试器调试方法详细说明 5.make工具使用说明

    嵌入式Linux C编程入门(第2版) PPT

    2.3 嵌入式linux编译器gcc的使用 41 2.3.1 gcc概述 41 2.3.2 gcc编译流程分析 42 2.3.3 gcc警告提示 45 2.3.4 gcc使用库函数 47 2.3.5 gcc代码优化 49 2.4 嵌入式linux调试器gdb的使用 49 ...

    精通LINUX下的C编程(配套光盘)第一部分

    2.4 编译器gcc的使用 2.5 LinuxC程序的开发过程 2.6 make工具及其使用 2.7 使用autoconf 2.8 使用automake 2.9 使用gdb调试程序 2.10 小结 习题 第3章 Linux下的文件编程 3.1 概述 .3.2 文件描述符 3.3 ...

Global site tag (gtag.js) - Google Analytics