gcc编译器用法

一个用c语言写的程序把他编译成计算机可指行的文件,一般有4个步骤

/*================================================================
*   Copyright (C) 2018 . All rights reserved.
*
*   文件名称:helloworld.c
*   创 建 者:ghostwu(吴华)
*   描    述:gcc编译器用法演示
*
================================================================*/

#include <stdio.h>
#define HELLO "hello world!\n"

int main(int argc, char *argv[])
{
    printf( HELLO );
    return 0;
}

1,预处理:这个步骤,主要是包含头文件,展开宏定义

gcc -E helloworld.c -o helloworld.i

2,生成汇编代码

gcc -S helloworld.i -o helloworld.s

3,编译汇编

gcc -c helloworld.s -o helloworld.o

4,链接

gcc helloworld.o -o helloworld

通常写完程序,我们用 gcc helloworld.c -o helloworld 直接完成以上四个步骤

gcc常用选项含义:

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

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

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

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

5. -Ldirname
将dirname所指出的目录加入到库文件的目录列表中。

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

gcc编译多个模块

helloworld.h

 1 ==============================================================
 2 *   Copyright (C) 2018 . All rights reserved.
 3 *
 4 *   文件名称:helloworld.h
 5 *   创 建 者:ghostwu(吴华)
 6 *   描    述:
 7 *
 8 ================================================================*/
 9
10 #ifndef _HELLO_H_
11 #define _HELLO_H_
12 void say_hello( const char* name );
13 #endif

helloworld.c

/*================================================================
*   Copyright (C) 2018 . All rights reserved.
*
*   文件名称:helloworld.c
*   创 建 者:ghostwu(吴华)
*
================================================================*/

#include <stdio.h>
#include "helloworld.h"

void say_hello( const char* name ) {
    printf( "%s\n", name );
}

main.c

/*================================================================
*   Copyright (C) 2018 . All rights reserved.
*
*   文件名称:main.c
*   创 建 者:ghostwu(吴华)
*   描    述:
*
================================================================*/

#include "helloworld.h"

int main(int argc, char *argv[])
{
    say_hello( "hello ghostwu" );
    return 0;
}

编译命令:

gcc helloworld.c main.c -o hello

原文地址:https://www.cnblogs.com/ghostwu/p/8213864.html

时间: 2024-10-09 02:53:56

gcc编译器用法的相关文章

Linux中gcc编译器的用法

在Linux环境下进行开发,gcc是非常重要的编译工具,所以学习gcc的基本常见用法时非常有必要的. 一.首先我们先说明下gcc编译源文件的后缀名类型 .c为后缀的文件,C语言源代码文件:  .a为后缀的文件,是由目标文件构成的档案库文件:  .C,.cc或.cxx 为后缀的文件,是C++源代码文件:  .h为后缀的文件,是程序所包含的头文件:  .i 为后缀的文件,是已经预处理过的C源代码文件:  .ii为后缀的文件,是已经预处理过的C++源代码文件:  .m为后缀的文件,是Objective

gcc基本用法

GCC基本用法 GCC最基本的用法是: gcc [option] filenames option:编译器所需要的编译选项 filenames:要编译的文件名 gcc编译流程 都以 hello.c 为例预处理: gcc –E hello.c –o hello.i编译: gcc –S hello.i –o hello.S汇编: gcc –C hello.S –o hello.o链接: gcc hello.o –o hello -O 优化 -O2 比-O更好的优化编译.链接.当然整个编译.链接过程会

linux成长之路(gcc编译器、静态库、动态库)

Jeremy Lin GCC简介 GCC(GNU Complier Collection)是GNU推出的功能强大.性能优越的多平台编译器套件,它包括了C.C++.Objective-C.Fortran.Java.Ada和Go语言的前端,也包括了这些语言的库,当前最新的版本是GCC 5.1.GCC可以在多种硬件平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%-30%.GCC编译器能将C.C++语言源程序.汇程式程序和目标程序编译.连接成可执行文件,如果没有给出可执行文件的名字

嵌入式开发之GCC编译器使用

嵌入式开发之GCC编译器使用 Linux系统下GCC是GNU推出的功能强大的性能优越的多平台编译器,是GNU的代表作之一.GCC 可以在多种硬件平台上编译出可执行程序,其执行效率一般比其他编译器高%20到%30.GCC编译器能将C C++语言程序汇编程序编译,链接成可执行程序.在linux文件没有统一的后缀,系统从文件的属性来区分可执行程序和不可执行程序.  1.1GCC编译程序的四个阶段 预处理(Pre-Processing) 编译(Comping) 汇编(Assembing) 连接(Link

gcc编译器对宽字符的识别

最早是使用VC++工具来学习C++,学的越多就越对VC挡住的我看不见的东西好奇,总想多接触一些开发环境,今日抽空摸索了一下CodeBlocks这个开源的IDE使用方法,配置的编译器是MinGW的gcc编译器,gcc编译多字节集的字符还没什么问题,但遇到宽字符,发现编译不通过,经过多方查找,发现gcc对宽字符的支持分规则同我用熟了的cl编译器有一些区别,具体用法如下: GNU   C/C++编译器gcc也可以正确支持wchar_t字符和字符串,但是源代码的保存格式必须符合下面条件:        

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

我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为 arm-linux-gcc.下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家. 在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段: 1. 预处理(Pre-Processing) 2. 编译(Compiling) 3. 汇编(Assembling) 4. 链接(Linking) Linux程序员可以根据自己的需要让 GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或

vi 编辑器,gcc 编译器的使用

vi编辑器是我们在linux下经常使用的文本编辑器,这个东西也是专门为程序员准备的,基本上每个Unix和Linux系统都为我们提供了这个软件,我们可以使用vi来编写我们的代码.在vi编辑器下所有操作都必须通过键盘和特定的快捷键组合来完成,刚开始学习的新手会感觉不太容易,但是这个东西很重要,我们先来学习如何使用它,掌握了这个东西去面试的时候也算是一门技能.而vim是vi的增强版,新增加了很多功能. 在shell下输入命令vi 文件名,例如:vi first.c,就开始编辑first.c文件了.vi

GCC编译器编译链接

在gcc编译器环境下,常见的文件扩展名的含义如下: .c:C源程序,经过预编译后的源程序也为.c文件,它可以通过-E参数输出. .h:头文件 .s:经过编译得到的汇编程序代码,它可以通过-S参数输出. .o:目标文件 .a:函数库 Gcc编译器常见语法: -c:只进行编译,不进行链接,输出的是与源文件同名的.o文件. -o:指定生成的文件的名称.链接生成可执行文件,这个参数后可以带可执行文件的名字,如果没有指定可执行文件的名字,则会默认为a.out. -S:输出汇编代码文件,输出一个与源文件同名

C语言的编译过程、安装gcc编译器以及设置环境变量

以我对C语言编译过程的了解,我用了一点时间画了一个图,提供给大家参考一下,希望有些能对您的问题提上帮助. 前几天刚初步学习了C语言的编译过程,感触挺深的.在C语言中头文件其实起了一个很大的作用. 1.头文件可以不需要编译 2.可以查看具体的声明 3.头文件加上实现文件的o文件提交给使用者即可 ,不需要知道源代码 4..o文件预先编译,所以整个项目编译时,会大大提高编译的时间 . 5.当一个文件(A.c文件)依赖于头文件(b.h)时 ,如果b.c编译之后形成的b.o文件重新编译后,a.o的文件不需