linux系统下C编译器GCC入门

合集下载

gcc使用大全

gcc使用大全

1、用于linux系统下编程的编译器概述GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU 开发的编程语言编译器。

它是一套GNU编译器套装以GPL 及LGPL 许可证所发行的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果电脑Mac OS X 操作系统的标准编译器。

GCC 原名为GNU C 语言编译器,因为它原本只能处理C语言。

GCC 很快地扩展,变得可处理C++。

之后也变得可处理Fortran、Pascal、Objective-C、Jav a, 以及Ada与其他语言。

历史GCC是由理查德·马修·斯托曼在1985年开始的。

他首先扩增一个旧有的编译器,使它能编译C,这个编译器一开始是以Pastel语言所写的。

Pastel是一个不可移植的Pascal语言特殊版,这个编译器也只能编译Pastel语言。

为了让自由软件有一个编译器,后来此编译器由斯托曼和Len Tower在1987年以C语言重写并成为GNU 专案的编译器。

GCC的建立者由自由软件基金会直接管理。

在1997年,一群不满GCC缓慢且封闭的创作环境者,组织了一个名为EGCS 〈Experimental/Enhanced GNU Compiler System〉的专案,此专案汇整了数项实验性的分支进入某个GCC专案的分支中。

EGCS比起GCC的建构环境更有活力,且EGCS最终也在1999年四月成为GCC的官方版本。

GCC目前由世界各地不同的数个程序设计师小组维护。

它是移植到中央处理器架构以及操作系统最多的编译器。

由于GCC已成为GNU系统的官方编译器(包括GNU/Linux家族),它也成为编译与建立其他操作系统的主要编译器,包括BSD家族、Mac OS X、NeXTSTEP 与BeOS。

GCC通常是跨平台软件的编译器首选。

有别于一般局限于特定系统与执行环境的编译器,GCC在所有平台上都使用同一个前端处理程序,产生一样的中介码,因此此中介码在各个其他平台上使用GCC编译,有很大的机会可得到正确无误的输出程序。

gcc的使用方法

gcc的使用方法

gcc的使用方法GCC(GNU Compiler Collection)是一款由GNU开发的编程语言编译器集合,支持多种编程语言,如C、C++、Fortran等。

它被广泛用于各种操作系统和硬件平台上的软件开发,提供了强大的功能和灵活的配置选项。

本文将介绍GCC的基本使用方法,帮助读者快速上手。

一、安装GCC要使用GCC,首先需要在您的计算机上安装它。

GCC可以在多个操作系统上运行,包括Linux、Windows和Mac OS。

具体的安装方法因操作系统而异,下面将分别介绍。

1. 在Linux上安装GCC:在大多数Linux发行版中,GCC已经默认安装。

如果您的系统中没有安装GCC,您可以通过包管理器来安装它。

例如,在Debian或Ubuntu系统上,可以使用以下命令安装GCC:```sudo apt-get install gcc```其他Linux发行版的安装方法请参考相应的文档。

2. 在Windows上安装GCC:在Windows上,可以通过MinGW或MSYS2来安装GCC。

这两个工具集提供了一种在Windows环境中使用GCC的方式。

您可以从官方网站上下载并按照安装向导进行安装。

3. 在Mac OS上安装GCC:在Mac OS上,可以使用Homebrew或MacPorts来安装GCC。

这两个软件包管理系统可以让您以与Linux相似的方式在Mac OS上安装软件。

例如,使用Homebrew安装GCC的命令如下:```brew install gcc```其他安装方法请参考相应文档。

二、编写源代码安装好GCC后,我们就可以开始编写源代码了。

GCC支持多种编程语言,但本文以C语言为例进行介绍。

打开任何文本编辑器,创建一个后缀名为.c的文件,并编写您的C 源代码。

例如,创建一个名为`hello.c`的文件,其中包含以下代码:```c#include <stdio.h>int main() {printf("Hello, world!\n");return 0;}```三、编译和运行代码一旦您编写好了源代码,接下来就可以使用GCC将其编译成可执行文件。

linux的gcc使用方法

linux的gcc使用方法

linux的gcc使用方法Linux是一种开源的操作系统,广泛应用于服务器和嵌入式系统中。

而GCC(GNU Compiler Collection)是Linux下最常用的编译器套件之一,用于将源代码编译成可执行文件。

本文将介绍GCC的使用方法,帮助读者快速上手。

一、安装GCC在Linux系统中,默认情况下已经安装了GCC。

可以通过运行以下命令来验证是否已经安装了GCC:```gcc --version```如果GCC已经安装,则会显示GCC的版本信息;如果没有安装,则可以通过运行以下命令来安装GCC:```sudo apt-get install gcc```二、编写源代码在使用GCC之前,我们需要先编写源代码。

可以使用任何文本编辑器创建一个以.c为后缀的源文件,例如hello.c。

下面是一个示例的源代码:```c#include <stdio.h>int main() {printf("Hello, world!\n");return 0;}```三、编译源代码编写完源代码后,我们可以使用GCC来将其编译成可执行文件。

在终端中运行以下命令:```gcc -o hello hello.c```其中,-o参数用于指定编译后生成的可执行文件的名称,hello为示例的可执行文件名,hello.c为源代码文件名。

如果编译成功,GCC将会生成一个名为hello的可执行文件。

四、运行可执行文件在编译成功后,我们可以通过以下命令来运行可执行文件:```./hello```如果一切顺利,终端将会输出"Hello, world!"的字符串。

五、GCC的其他常用选项除了上述基本的使用方法外,GCC还提供了许多其他的选项,用于控制编译过程的行为。

以下是一些常用的选项:- -Wall:开启所有警告信息的显示。

- -g:生成供调试器使用的调试信息。

- -O2:进行优化处理,提高程序执行效率。

gcc 用法

gcc 用法

gcc 用法GCC (GNU Compiler Collection) 是一套自由软件编译器,可以用于编译多种编程语言的源代码,包括 C、C++、Objective-C、Fortran、Ada 和其他一些语言。

GCC 是GNU计划的一部分,由自由软件基金会维护和发展。

本文将详细介绍 GCC 的使用方法。

一、环境准备在使用GCC之前,需要先安装好GCC。

GCC是开源软件,常见的Linux发行版都默认安装GCC,Windows下可以通过安装Cygwin或MinGW等方式安装GCC。

安装完成后,在命令行中输入gcc --version查看gcc的版本号确认是否安装成功。

除了GCC之外,还需要一个文本编辑器来编写源代码。

Windows下常用的文本编辑器有Notepad++,Linux下则使用vim或emacs等编辑器。

还需要了解一些基本的编程知识和语法。

二、GCC 编译 C 语言程序以下是一个简单的 C 语言程序,可以输出 "Hello, world!":```c#include <stdio.h>printf("Hello, world!\n");return 0;}```将上述代码保存为 helloworld.c 文件,然后在命令行中进入文件所在目录,输入以下命令编译该程序:```gcc helloworld.c -o helloworld```gcc是编译器的命令,helloworld.c是待编译的源代码文件名,-o helloworld是生成的可执行文件名。

执行上述命令后,GCC 会把源代码编译成可执行文件 helloworld。

运行该可执行文件,可以得到以下输出:```Hello, world!```三、GCC 编译 C++ 程序GCC 也可以编译 C++ 程序,以下是一个简单的 C++ 程序,可以输出 "Hello,world!":```c++#include <iostream>std::cout << "Hello, world!" << std::endl;return 0;}```将上述代码保存为 helloworld.cpp 文件,然后在命令行中进入文件所在目录,输入以下命令编译该程序:```g++ helloworld.cpp -o helloworld```g++是编译器的命令,helloworld.cpp是待编译的源代码文件名,-o helloworld是生成的可执行文件名。

arm-linux-gcc 常用参数讲解 gcc编译器使用方法

arm-linux-gcc 常用参数讲解 gcc编译器使用方法

arm-linux-gcc常用参数讲解gcc编译器使用方法我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为arm-linux-gcc。

下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。

在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段:1. 预处理(Pre-Processing)2. 编译(Compiling)3. 汇编(Assembling)4. 链接(Linking)Linux程序员可以根据自己的需要让GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。

和其它常用的编译器一样,GCC也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。

以文件example.c为例说明它的用法0. arm-linux-gcc -o example example.c不加-c、-S、-E参数,编译器将执行预处理、编译、汇编、连接操作直接生成可执行代码。

-o参数用于指定输出的文件,输出文件名为example,如果不指定输出文件,则默认输出a.out1. arm-linux-gcc -c -o example.oexample.c-c参数将对源程序example.c进行预处理、编译、汇编操作,生成example.0文件去掉指定输出选项"-o example.o"自动输出为example.o,所以说在这里-o加不加都可以2.arm-linux-gcc -S -o example.sexample.c-S参数将对源程序example.c进行预处理、编译,生成example.s文件-o选项同上3.arm-linux-gcc -E -o example.iexample.c-E参数将对源程序example.c进行预处理,生成example.i文件(不同版本不一样,有的将预处理后的内容打印到屏幕上)就是将#include,#define等进行文件插入及宏扩展等操作。

linuxgcc命令及用法

linuxgcc命令及用法

linuxgcc命令及用法Linux的gcc命令是一款非常强大的编译器,用于将源代码转换为可执行文件。

本文将详细介绍gcc命令及其常用的用法,帮助读者更好地理解和使用这款工具。

一、gcc命令的基本语法结构gcc是GNU Compiler Collection(GNU编译器集合)的简称,因此其命令基本语法结构一般为:shellgcc [选项] [输入文件]其中,选项用于指定编译时的相关参数,输入文件则是需要编译的源文件。

二、gcc命令的常用选项gcc命令提供了许多选项,用于控制编译过程及生成的可执行文件的属性。

下面是一些常用的gcc选项及其作用:1. -o:用于指定输出文件的名称。

例如,使用`-o myprogram`选项将输出文件命名为myprogram。

2. -c:仅进行编译,不进行链接操作。

这个选项常用于编译多个源文件时,先将每个源文件编译为目标文件,再进行链接操作。

3. -g:生成调试信息。

这个选项会在编译时生成与调试器兼容的调试信息,方便开发人员进行程序调试。

4. -Wall:显示所有警告信息。

使用这个选项可以使编译器在编译时输出更多的警告信息,帮助开发人员提前发现潜在的问题。

5. -I:指定头文件的搜索路径。

使用这个选项可以告诉编译器在指定的路径中查找头文件,方便引用外部库、模块等。

6. -L:指定库文件的搜索路径。

与-I选项类似,这个选项用于告诉编译器在指定的路径中查找库文件,用于链接时的库文件搜索。

7. -l:指定要链接的库文件。

使用这个选项可以显式地告诉编译器要链接的库文件,如:-lmath将链接math库文件。

三、gcc命令的应用实例下面通过几个实例来演示gcc命令的具体用法,以帮助读者更好地理解和掌握这款工具。

1. 编译单个源文件并生成可执行文件假设我们有一个名为`hello.c`的源文件,内容如下:c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}我们可以使用以下命令将其编译为可执行文件`hello`:shellgcc -o hello hello.c编译成功后,即可在当前目录下生成名为`hello`的可执行文件。

Linux系统下C语言编程及技巧研究

Linux系统下C语言编程及技巧研究

Linux系统下C语言编程及技巧研究Linux是一种自由和开放源代码的类Unix操作系统,广泛用于服务器领域。

同时,Linux系统也是许多开发者和程序员首选的开发环境。

因此,掌握在Linux系统下C语言编程及技巧非常重要。

本文将重点介绍在Linux下进行C语言编程的一些技巧和要点。

1. GNU编译器工具集(GCC)GCC是 GNU编译器工具集的简称,支持多种编程语言,如C、C++、Objective-C、Java等。

在Linux系统下,GCC是编译C程序的主要工具。

开发者可以通过命令行或集成式开发环境(IDE)使用GCC。

2. 环境变量环境变量是Linux系统的重要概念,能够帮助开发者方便地访问系统资源和软件库。

开发者可以通过设置环境变量,指定GCC的默认搜索路径和库路径。

例如,下列命令可将环境变量C_INCLUDE_PATH设置为当前目录:export C_INCLUDE_PATH=.3. 头文件头文件在C语言程序的编写过程中是非常重要的。

Linux系统提供了许多C语言头文件,例如stdio.h、stdlib.h等。

开发者也可以根据需求编写自己的头文件。

在编写程序时,一定要正确地包含头文件。

否则编译器将无法识别预定义的类型和函数。

例如,下列程序演示了如何使用stdio.h头文件中的printf函数:4. 动态链接库动态链接库(Dynamic Linking Libraries,DLL)提供了跨多个程序共享函数和代码的能力。

在Linux系统下,动态链接库通常以.so文件形式出现。

开发者可以通过指定链接器选项使用动态链接库。

例如,下列命令将可执行文件myprog连接到数学库libm.so:gcc -o myprog myprog.c -lm5. 调试器调试器是程序员的重要工具。

调试器能够帮助开发者在程序崩溃或产生错误时追踪问题。

在Linux系统下,调试器gdb(GNU调试器)是普遍使用的工具。

例如,下列命令启动了gdb并加载了可执行文件:gdb ./myprog在gdb命令行下,可以执行多种命令来分析程序的行为,如查看变量的值、单步执行代码、设置断点等。

gcc的使用方法

gcc的使用方法

gcc的使用方法
gcc是一个编译器,它可以将文本类文件翻译成机器可以执行的二进制可执行文件。

使用gcc的方法包括以下步骤:
1.编写源代码:使用文本编辑器编写C语言源代码文件,通常以.c为扩展
名。

2.打开终端:在Linux或Mac OS X系统中打开终端应用程序,或者在
Windows系统中打开命令提示符。

3.进入源代码目录:使用cd命令进入存放源代码文件的目录。

4.编译源代码:输入gcc命令并附加选项和参数来编译源代码文件。


如,使用以下命令编译名为myfile.c的源代码文件:gcc myfile.c -o myfile。

其中,-o选项指定输出文件的名称为myfile。

5.运行可执行文件:如果编译成功,将生成一个可执行文件。

在Linux或
Mac OS X系统中,使用./myfile命令来运行可执行文件。

在Windows系统中,直接双击可执行文件即可运行。

另外,gcc还有很多选项和参数可用于优化代码、指定编译器警告级别、链接库文件等。

这些选项和参数可以在gcc命令中使用,并且可以通过查阅gcc文档来了解更多信息。

除了单个源文件的编译,gcc还可以用于编译多个源文件组成的程序。

在这种情况下,可以使用一条gcc命令来编译所有源文件并生成可执行文件。

以上是关于gcc使用方法的描述,希望对你有所帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

linux系统下C编译器— gcc 入门<一>gcc简介Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。

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

gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为 a.out的文件。

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

而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。

.c为后缀的文件,C语言源代码文件;.a为后缀的文件,是由目标文件构成的档案库文件;.C,.cc或.cxx 为后缀的文件,是C++源代码文件;.h为后缀的文件,是程序所包含的头文件;.i 为后缀的文件,是已经预处理过的C源代码文件;.ii为后缀的文件,是已经预处理过的C++源代码文件;.m为后缀的文件,是Objective-C源代码文件;.o为后缀的文件,是编译后的目标文件;.s为后缀的文件,是汇编语言源代码文件;.S为后缀的文件,是经过预编译的汇编语言源代码文件。

<二>gcc的执行过程虽然我们称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。

命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。

接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。

汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,. S为后缀的汇编语言源代码文件和汇编,.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。

当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。

在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。

<三>gcc的基本用法和选项在使用gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。

g cc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。

gcc最基本的用法是∶gcc [options] [filenames]其中options就是编译器所需要的参数,filenames给出相关的文件名称。

-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o 为后缀的目标文件,通常用于编译不包含主程序的子程序文件。

-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。

如果不给出这个选项,gcc就给出预设的可执行文件a.out。

-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。

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

-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。

-Wall, 编译警告选项,在编译的过程中如果gcc遇到一些它认为可能会发生错误的地方就会提出一些相应的警告和提示信息。

提示我们注意这个地方是不是有什么失误导致的错误。

-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。

C程序中的头文件包含两种情况∶A)#include <myinc.h>B)#include "myinc.h"其中,A类使用尖括号(< >),B类使用双引号(“ ”)。

对于A类,预处理程序cpp 在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而对于B类,cpp在当前目录中搜寻头文件,这个选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。

在程序设计中,如果我们需要的这种包含文件分别分布在不同的目录中,就需要逐个使用-I选项给出搜索路径。

-Ldirname,将dirname所指出的目录加入到程序函数档案库文件的目录列表中,是在连接过程中使用的参数。

在预设状态下,连接程序ld 在系统的预设路径中(如/usr/lib)寻找所需要的档案库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后到系统预设路径中寻找,如果函数库存放在多个目录下,就需要依次使用这个选项,给出相应的存放目录。

-lname,在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。

例如,-lm表示连接名为“libm.a”的数学函数库。

<四>gcc的错误类型及对策gcc编译器如果发现源程序中有错误,就无法继续进行,也无法生成最终的可执行文件。

为了便于修改,gcc给出错误资讯,我们必须对这些错误资讯逐个进行分析、处理,并修改相应的语言,才能保证源代码的正确编译连接。

gcc给出的错误资讯一般可以分为四大类,下面我们分别讨论其产生的原因和对策。

第一类∶C语法错误错误资讯∶文件source.c中第n行有语法错误(syntex errror)。

这种类型的错误,一般都是C语言的语法错误,应该仔细检查源代码文件中第n行及该行之前的程序,有时也需要对该文件所包含的头文件进行检查。

有些情况下,一个很简单的语法错误,g cc会给出一大堆错误,我们最主要的是要保持清醒的头脑,不要被其吓倒,必要的时候再参考一下C语言的基本教材。

第二类∶头文件错误.错误资讯∶找不到头文件head.h(Can not find include file head.h)。

这类错误是源代码文件中的包含头文件有问题,可能的原因有头文件名错误、指定的头文件所在目录名错误等,也可能是错误地使用了双引号和尖括号。

第三类∶档案库错误错误资讯∶连接程序找不到所需的函数库,例如∶ld: -lm: No such file or direct ory.这类错误是与目标文件相连接的函数库有错误,可能的原因是函数库名错误、指定的函数库所在目录名称错误等,检查的方法是使用find 命令在可能的目录中寻找相应的函数库名,确定档案库及目录的名称并修改程序中及编译选项中的名称。

第四类∶未定义符号错误资讯∶有未定义的符号(Undefined symbol)。

这类错误是在连接过程中出现的,可能有两种原因∶一是使用者自己定义的函数或者全局变量所在源代码文件,没有被编译、连接,或者干脆还没有定义,这需要使用者根据实际情况修改源程序,给出全局变量或者函数的定义体;二是未定义的符号是一个标准的库函数,在源程序中使用了该库函数,而连接过程中还没有给定相应的函数库的名称,或者是该档案库的目录名称有问题,这时需要使用档案库维护命令ar检查我们需要的库函数到底位于哪一个函数库中,确定之后,修改gcc连接选项中的-l和-L项。

排除编译、连接过程中的错误,应该说这只是程序设计中最简单、最基本的一个步骤,可以说只是开了个头。

这个过程中的错误,只是我们在使用C语言描述一个算法中所产生的错误,是比较容易排除的。

我们写一个程序,到编译、连接通过为止,应该说刚刚开始,程序在运行过程中所出现的问题,是算法设计有问题,说得更玄点是对问题的认识和理解不够,还需要更加深入地测试、调试和修改。

一个程序,稍为复杂的程序,往往要经过多次的编译、连接和测试、修改。

下面我们学习的程序维护、调试工具和版本维护就是在程序调试、测试过程中使用的,用来解决调测阶段所出现的问题。

<五>gcc编译实例学习的最好方法是实践,下面我们就开始一个非常简单的Hello World实例。

编辑一个文件名hello.c的原文件,文件的内容如下:CODE: [Copy to clipboard]------------------------------------------------#include <stdio.h>int main(int argc, char *argv[]){char *pszStr = "Hello world\n";printf("Hello, world\n");exit(0);}(1)使用缺省方法编译该程序$program> gcc hello.c$programt> /a.out使用缺省方法编译以后,会生成一个a.out程序,然后就可以执行了。

(2)使用-Wall选项查看是否有警告信息$program> gcc -o hello hello.c -Wallhello.c: In function `main':hello.c:5: warning: unused variable `pszStr'hello.c:8: warning: control reaches end of non-void function两个警告信息。

一个是第五行申明的变量*pszStr没有被使用到,我们可以删除,一个是我们申明函数返回int型,但是没有返回一个返回值。

(3)使用-O2选项查看优化结果$program> gcc -o hello hello$program> gcc -o helloO hello.c -O2$program> ls -al-rwxr-xr-x 1 llebsdb dba 5209 4月14 15:57 hello-rw-r--r-- 1 llebsdb dba 126 4月14 15:53 hello.c-rwxr-xr-x 1 llebsdb dba 5193 4月14 15:57 helloO可以看到使用不同的优化,会导致文件的大小不一样(当然也会导致执行的速度不一样了)。

相关文档
最新文档