zoukankan      html  css  js  c++  java
  • 编译选项含义

    编译选项:

    现在我们Makefile中的编译选项有:

     

    -g :可执行程序包含调试信息;(给gdb调试使用)

    -O2:该优化选项会牺牲部分编译速度,除了执行-O1所执行的所有优化之外

    还会采用几乎所有目标配置支持的优化算法,用以提高目标代码的运行速度。也就是增加相应的优化编译选项,具体看下面的相应链接;

    https://www.zhihu.com/question/27090458

    -fpic:用于生成位置无关代码。

    位置无关码的作用:

    1、程序在运行期间动态加载到内存中;

    2、程序在不同场合与不同程序组合后加载到内存(一般用于动态链接库)

    3、在运行期间不同地址相互之间的映射;(如bootloader)

    简言之,位置无关码就是可以在进程的任意内存位置执行的目标码,动态链接库必须使用。

    -L.

    -L 搜索相应库文件路径,.是指当前路径;

    -march=armv7-a

    -march=armv7-a是指编译出来的汇编语言是针对armv7架构的;

    -mtune=contex-a8

    与上面一样,这个则是针对板子上的CPU选项是contex-a8类型的;

    -mfloat-abi=softfp

    上面的编译选项和-mfloat-abi=hard,这个参数都用来产生硬浮点指令;硬浮点则是通过浮点运算单元(FPU)来完成,使用实际的硬件浮点运算单元会比软浮点快得多;

    -mthumb-interwork

    这个编译选项则是支持编译出来的汇编语言可以支持ARM和THUMB指令集;

    -mno-thumb-interwork

    缺省情况下是“-mno-thumb-interwork”,因为指定了“-mthumb-interwork”产生的代码稍微大一些;

    -Wno-write-strings:

    会忽略掉C++ char * 转const char  *的警告,这样并不会很安全;

    -Wno-trigraphs

    关闭ANSI C的三联符编译出现的错误;

    三联符的概念:

    http://blog.csdn.net/daheiantian/article/details/6095507

    -fno-tree-vectorize

    关闭程序中的向量化的选项;如果增加在-O3会默认开启,但我们并没有使用-O3选项;

    程序向量化选项的意义网上搜索相应的资料并不多,但总结起来应该就是使用gcc支持将相应的数学公式直接转换成程序代码,提高算法速度。

    -fno-inline

    忽略代码中的inline关键字,该选项使编译器将内联函数以普通函数正常对待,等同于无优化选项的处理。

    -fno-short-enums

    -fshort-enums支持给enum类型分配它声明的值域范围的字节数;

    enum类型等于大小足够的最小整数类型。

    也就是说

    typedef enum num{

          one = 1,

          two = 2,

          three = 3,

          four = 4,

    }NUM;

    NUM num1;

    sizeof(num1)不增加这个-fshort-enums选项的时候为4,增加后为大小为1;

    -fno-short-enums则是无这个选项优化处理。gcc是默认没有-fshort-enums这个选项的;

    -Wundef

    当一个没有定义的符号出现在 #if 中时,给出警告。

    -fexpensive-optimizations

    执行各种消耗昂贵的优化技术,但是不一定保证运行时性能能提升,反而可能一定程度上会产生负面影响.

     -frename-registers:

    在寄存器分配后,通过使用registersleft over来避免预定代码中的虚假依赖。

    -fomit-frame-pointer

    能够提高程序性能;

    原理上最主要的区别是少了栈帧的切换和栈地址的保存;在gdb 执行disassemble命令时,由于没有保存相应栈调用地址,而导致无法追踪函数调用顺序的问题;

    -Dstrlcat=strncat

    网上没有相关的资料

  • 相关阅读:
    作业作业
    Alpha 冲刺 (4/10)
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
    项目需求分析评审表
    项目需求分析答辩总结
    项目选题报告答辩总结
    UML
    各组项目答辩评分与存在问题
  • 原文地址:https://www.cnblogs.com/linhaostudy/p/7729680.html
Copyright © 2011-2022 走看看