zoukankan      html  css  js  c++  java
  • gcc

    1. gcc: 全名 GNU C Compiler

    gcc编译器 能将C, C++, 汇编程序编译,链接成可执行文件。

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

    2. gcc编译程序时,编译过程可以被细分为4个阶段:

    a.预处理(pre-processing)
    b.编译(Compling)
    c.汇编(Assembling)
    d.链接(Linking)

    3.gcc通过后缀来区别输入文件的类型:

    .c ----C语言源代码文件
    .a ---- 是由目标文件构成的库文件
    .C 或 .cc 或 .cxx ---- C++源代码文件
    .h ---- 头文件
    .i ---- 已经与处理过的C源代码文件
    .ii ---- 已经与处理过的C++源代码文件
    .o ---- 编译后的目标文件
    .s ---- 汇编语言源代码。
    .S ---- 经过预编译的汇编语言源代码
     
    4. gcc最基本用法:

    gcc [options] [filenames]


    gcc option 有100多个,
    几个最基本,最常用的参数如下:

    -o ---- output_filename

    -c ---- 只编译,不链接成可执行文件,即把.c等源代码编译成.o的目标文件,但是不链接。

    -g ---- 产生调试工具(GNU的gdb)所需要的符号信息,可以用来对编译出的程序进行调试。

    -O ---- 优化编译,链接过程,产生的可执行文件执行效率更高,但是编译,链接速度要慢些

    -O2 ---- 比O 更彻底的优化。

    -Idirname ---- 用来查找执行头文件目录的参数。

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

    -lname ----

    -static ---- 静态链接库文件。

    -Wall ---- 生成所有警告信息

    -w ---- 不生成人和警告

    -DMACRO: 相当于程序中的#define MACRO。


    5. 链接 和 库 都有动态和静态两种:

    静态链接:把程序和库合在一起,每个程序都会有拷贝库。
    动态链接:不会把程序和库合在一起,会在运行时,去调用库中的一些函数。

    库也有动态库合静态库:

    动态库: .so 为后缀。
    静态库: .a 为后缀。

     

    补充:

    a. $time ./optimize   ---- 用来计运行optimize所耗费的时间

    b. $touch a.h   ---- 用来黏贴a.h文件


  • 相关阅读:
    AGC023C Painting Machines
    LG3834 可持久化线段树1
    又是一天
    ARC103F Distance Sums
    CF1053E Euler tour
    UOJ22 外星人
    洛谷4248 AHOI2013差异 (后缀数组SA+单调栈)
    洛谷2408不同字串个数/SPOJ 694/705 (后缀数组SA)
    CF49E Common ancestor(dp+dp+dp)
    洛谷4051 JSOI2007 字符加密(SA)
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6173298.html
Copyright © 2011-2022 走看看