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


  • 相关阅读:
    《android开发艺术探索》读书笔记(八)--WindowManager
    《android开发艺术探索》读书笔记(七)--动画
    《android开发艺术探索》读书笔记(六)--Drawable
    《android开发艺术探索》读书笔记(五)--RemoteViews
    PendingIntent
    桌面小部件开发
    《android开发艺术探索》读书笔记(四)--View工作原理
    Quartz.NET开源作业调度框架系列
    多线程下C#如何保证线程安全?
    图解.NET Stack和Heap的本质区别
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6333011.html
Copyright © 2020-2023  润新知