如何使用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
分享到:
相关推荐
2. **GCC (GNU Compiler Collection)**:GCC是广泛使用的开源编译器套件,支持多种编程语言,如C、C++、Fortran等。在这个版本4.6.4中,它已针对ARM架构进行了优化,以生成高效的目标代码。 3. **安装步骤**:根据...
标题:“arm-linux-gnueabihf-gcc编译器”是针对ARM架构在Linux系统上进行交叉编译的重要工具。它允许开发者在非ARM架构(如x86或x86_64)的主机系统上构建运行在ARM设备上的应用程序。 交叉编译是指在一种体系结构...
**TDM-GCC编译器详解** TDM-GCC(Tiny Dinosaur MinGW)是一款专为Windows操作系统设计的编译器套件,它基于著名的GCC(GNU Compiler Collection)并进行了优化,以更好地适应Windows环境。GCC是开源软件项目,包含...
`arm-linux-gcc`是GNU Compiler Collection(GCC)的一个定制版本,它包含了针对特定目标系统的编译器、链接器和其他工具链组件。 在Ubuntu系统中,安装和使用`arm-linux-gcc`交叉编译器通常涉及以下步骤: 1. **...
在开发针对ARM平台的应用程序时,一个关键的工具就是编译器,特别是ARM-Linux-gcc编译器。本文将围绕"gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz"这一特定版本的编译器,深入探讨其特性和使用方法...
总结,ARM-Linux-GCC 5.4.0交叉编译器是嵌入式Linux系统开发的得力工具,它的使用涵盖了环境配置、Makefile编写、编译和链接等多个环节。理解并熟练掌握这一工具,对于提升ARM平台上的软件开发能力至关重要。
用户在解压后,可以将“opt”目录设置到环境变量PATH中,以便于命令行调用arm-linux-gcc编译器和其他相关工具。 总结一下,"arm-linux-gcc-4.5.1-v6-vfp-20101103"是友善之臂公司为ARM11处理器提供的一个交叉编译...
标题中的"aarch64-linux-gnu-gcc"是一个交叉编译器,用于在aarch64(也称为ARM64或AArch64)架构上构建Linux应用程序。它基于GNU工具链,是GCC(GNU Compiler Collection)的一个特定版本,这里是7.5.0,由Linaro...
本文将深入探讨ARM-Linux-GCC-4.8.4这一特定版本的交叉编译器,帮助读者了解其功能、应用场景及如何使用。 一、什么是交叉编译器 交叉编译器,顾名思义,是一种能够在一种体系结构(宿主机)上编译出另一种体系...
"WINDOWS下ZYNQ LINUX交叉编译器"说明了这个工具链是在Windows操作系统下使用的,用于构建针对ZYNQ平台上运行的Linux系统的应用程序。这通常涉及到将C或C++源代码转化为能在ZYNQ SoC的ARM内核上执行的二进制文件。...
2. **GCC(GNU Compiler Collection)简介**:GCC是一套由GNU项目提供的编译器集合,支持多种编程语言,如C、C++等。`arm-linux-gcc`是专为arm架构设计的GCC版本之一。 3. **Fedora简介**:Fedora是一款基于Linux的...
ARM-Linux-GCC工具链包含了预编译的C和C++编译器、链接器以及其他必要的工具,如汇编器和调试器,它们都针对ARM处理器进行了优化。 ARM-Linux-GCC 5.4.0 版本包含以下组件: 1. **GCC (GNU Compiler Collection)**...
总之,`arm-linux-gcc`是进行ARM架构Linux系统交叉编译的重要工具,它的安装和使用涉及到Linux环境变量配置、编译选项选择、库依赖管理等多个方面。熟练掌握这些技能,对于在嵌入式领域开发高效、可靠的应用至关重要...
现在,你可以通过运行`arm-linux-gcc --version`来检查编译器是否成功安装并可以使用。如果返回版本信息,说明安装成功。 **七、开始交叉编译** 至此,你已经具备了使用`arm-linux-gcc-4.4.3`进行交叉编译的基础...
总结来说,内网环境下Linux上安装GCC和G++编译器,以及用于编译调试的GDB,需要确保系统拥有必要的依赖,并通过正确的方式安装这些工具。这不仅为C/C++程序的编译提供了基础,也为服务器软件如Nginx的自定义编译提供...
《RISC-V架构下的ESP开发工具链:riscv32-esp-elf-gcc8_4_0-esp-2021r2-linux-armel.tar.gz详解》 在现代计算机科学领域,RISC-V架构以其开放源码、精简指令集、可扩展性以及高性能的特点,逐渐成为嵌入式系统和...
Linux 下使用 CodeBlocks 交叉编译 ARM-LINUX-GCC 程序 在这个资源中,我们将学习如何使用 CodeBlocks 在 Linux 平台下交叉编译 ARM-LINUX-GCC 程序。交叉编译是一种在不同的平台之间编译代码的技术,能让开发者在...
GCC 是一个强大的开源编译器套件,支持 C、C++、Objective-C、Fortran、Ada 和 Go 等多种编程语言。在交叉编译环境中,GCC 被配置来生成与宿主机不同的目标架构的代码。"arm-linux-gcc" 实际上是 GCC 的一个实例,...
"arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2" 文件就是这样一个针对ARM平台的交叉编译工具链,它使得开发者能够在非ARM环境里高效地构建和调试针对ARM处理器的应用程序。 GCC,全称GNU Compiler Collection,是由GNU...
2. 配置编译器:使用`./configure`命令来配置编译器,指定目标架构(如--target=mipsel-linux)和其他定制选项。 3. 编译和安装:通过`make`命令编译源代码,然后使用`make install`将编译好的交叉编译器安装到预定...