• GCC简介
  • GCC基本用法
  • GCC程序产生过程
  • GCC编译选项

一、GCC简介

1.1 GCC特点

Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的

代表作之一。Gcc可以在多种硬体平台上编译出可执行程序,其执行效率与一般的编译器

相比平均效率要高20%~30%。

1.2 Gcc基本用法

Gcc最基本的用法是∶

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

二、GCC程序产生过程

三、GCC文件后缀

Gcc通过后缀来区别输入文件的类别,常见类型有:

  • .c为后缀的文件: C语言源代码文件
  • .a为后缀的文件: 是由目标文件构成的库文件
  • .C,.cc或.cxx 为后缀的文件: 是C++源代码文件
  • .h为后缀的文件: 头文件
  • .o为后缀的文件: 是编译后的目标文件
  • .s为后缀的文件: 是汇编语言源代码文件

四、GCC常见编译选项

-o output_filename

确定可执行文件的名称为output_filename。如果不给出这个选项,gcc就

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

-O (大写O ,程序优化)
  • -O,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、连接过程中进行

    优化处理,这样产生的可执行文件的执行效率可以提高,但是编译、连接的速度就相应地要慢一些。
  • -O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
//比较运行结果
1. gcc optimize.c -o optimize
time ./optimize
2. gcc –O optimize.c -o optimize
time ./optimize
-c:不链接。编译器只是由输入的.c等源代码

文件编译生成.o为后缀的中间文件。

-g:

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

-I dirname:

将dirname所指出的目录作为编译器寻找头文件的标

准路径。

C程序中的头文件包含两种情况∶

  • include <A.h>

  • include “B.h”

  • 尖括号和引号的区别

对于<>,gcc在系统预设的头文件目录(如/usr/include)中搜寻

相应的文件;而对于””,gcc在当前目录中搜寻头文件。

-I选项的作用是告诉gcc,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找(批量添加自定义头文件路径)

例:gcc hello.c -I /home/Louis/Desktop -o hello
编译警告

编译错误与编译警告都是我们的程序设计中经常遇到的问题. 编译错误一般是代码中出现语法错误,程序无法编译执行,必须修改. 编译警告是编译器发现程序中不合理的地方(比如类型不匹配),建议最好修改,但不修改也可以编译执行。

  • -Wall:生成所有警告信息
  • -w:不生成任何警告信息
-DMACRO:

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

【Linux】GCC编译的更多相关文章

  1. linux gcc 编译动态类库(.so)和静态类库(.a)

    linux gcc 编译动态类库(.so)和静态类库(.a) 我的编译环境 ubuntu desktop 16.04 一:测试代码 测试有3个文件:AB.h,AB.c,test.c //AB.h vo ...

  2. Linux gcc 编译日记

    gcc 编译器是众多编译器组合入口,例如在编译 .cpp 文件时,使用c++ 编译器,编译.c 文件时,使用c编译器. 在编译c++程序时, 库文件与头文件可通过 -L[dir] 指定库目录 , -l ...

  3. Linux GCC编译警告:Clock skew detected. 错误解决办法

    今天在虚拟机上用GCC编译一个程序的时候,出现了下面的错误: make: warning: Clock skew detected. Your build may be incomplete 试了ma ...

  4. Linux Gcc编译错误(转载)

    转自:http://www.linuxidc.com/Linux/2012-01/52153.htm Linux系统下的c编程与Windows有所不同,如果你在用gcc编译代码的时候提示‘for’ l ...

  5. linux --> gcc编译之路径搜索

    gcc编译之路径搜索 头文件 --> 搜寻先从-I开始; --> 找gcc的环境变量 : C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PA ...

  6. Linux gcc编译之-std选项

    用GCC编译代码时候后面带有-std=c++1z 的选项,这是指定c/c++的标准.具体的标准如下,详细信息可以看引用里面的详细说明

  7. Linux gcc编译(动态库,静态库)

    1. linux 库路径: /lib , /usr/lib , /usr/local/lib 2.linux 编译静态库 a.编写源文件vi pr1.c void print1(){    print ...

  8. linux gcc 编译时头文件和库文件搜索路径

    一.头文件    gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INC ...

  9. Linux GCC编译库

    本文主要解决以下几个问题 1).为什么要使用库? 2).库的分类 3).创建自己的库 为什么要使用库? 或许大家对自己初学 Linux时的情形仍记忆尤新吧.如果没有一个能较好的解决依赖关系的包管理器, ...

  10. Linux GCC编译使用动态、静态链接库 (转)

    原文出处:http://blog.csdn.net/a600423444/article/details/7206015 在windows下动态链接库是以.dll后缀的文件,二在Linux中,是以.s ...

随机推荐

  1. oracle五种约束的创建和移除:

    .主键约束: 创建表的时候就添加: create table table_name (categoryId varchar2(), categoryName varchar2(), primary k ...

  2. 补档 Codeblocks下的文件标题栏(标签)显示方法

    可能在以下链接也能看到这篇文档 我知道很多人都不知道这个到底叫啥,还不如直接一点: 文件标题栏 就是如下的效果. 解决办法: 在左上角第三个view下,打开后取消Hide editor tabs 选项 ...

  3. Win10安装MySQL5.7.22解压缩版的方法及手动配置讲解

    1.先去MYSQL官网下载安装包,解压放到C盘 2.新建一个my.ini文件放到bin文件夹下面,内容如下,路径对应自己的安装目录: [mysql] # 设置mysql客户端默认字符集 default ...

  4. 将Eclipse的Java Project转换为Dynamic Web Project

    在用Eclipse做JavaEE开发时经常遇到Web工程被识别为Java工程的问题,导致很多功能无法使用. 只需做以下操作便可解决该问题. 1.右击Java工程选择Properties 2.选择左边目 ...

  5. Oracle PL/SQL之GROUP BY GROUPING SETS

    [转自] http://blog.csdn.net/t0nsha/article/details/6538838 使用GROUP BY GROUPING SETS相当于把需要GROUP的集合用UNIO ...

  6. hdu1702 ACboy needs your help again!(栈处理)

    ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  7. linux系统编程之(一) 信号量

    信号量 一.什么是信号量 信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有. 信号量的值为正的时候,说明它空闲.所测试的线程可以锁定而使用它.若为0,说明 它被占用,测 ...

  8. web app与app的区别,即html5与app的区别

    公司准备要做一个项目,是p2p配资的app.在网上问了一些人后,发现有的是直接有html5做好后,用软件封装的.之前我学过app的开发,当时Android版本的,知道开发Android app时写的代 ...

  9. Python 用栈判断括号匹配

    #!/usr/bin/python # -*- coding: UTF-8 -*- from pythonds.basic.stack import Stack def parChecker(symb ...

  10. win 引用win32无效问题

    我使用pycharm 安装: python window 10 下安装win32 module 问题:安装后引用win32api等依赖,无效,但是目录下确实已经安装: 解决方案: ${python_h ...