• 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文件


  • 相关阅读:
    1.27
    1.25
    Representation Learning with Contrastive Predictive Coding
    Learning a Similarity Metric Discriminatively, with Application to Face Verification
    噪声对比估计(负样本采样)
    Certified Adversarial Robustness via Randomized Smoothing
    Certified Robustness to Adversarial Examples with Differential Privacy
    Dynamic Routing Between Capsules
    Defending Adversarial Attacks by Correcting logits
    Visualizing Data using t-SNE
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6173298.html
Copyright © 2020-2023  润新知