@第三天(●ˇ∀ˇ●)嵌入式Linux暑期实训分享
了解一下gcc的三级优化
GNU编译器提供-O选项供程序优化使用:
-O1提供基础级别的优化;主要在优化汇编语言的处理方式上,以及变量常量的优化。
-O2 提供更加高级的代码优化,会占用更长的编译时间 ;主要在内存的管理和特殊指令的使用
-O3 提供最高级的代码优化 ;
-O4 不优化,这是默认值
不同的优化级别使用的优化技术也可以单独的应用于代码。 可以使用-f命令行选项引用每个单独的优化技术。
下面只介绍一下-O3的优化:
-finline-functions: 这种优化技术不为函数创建单独的汇编语言代码,而是把函数代码包含在调度程序的
代码中。 对于多次被调用的函数来说, 为每次函数调用复制函数代码。 虽然这样对于减少代码长度不利, 但是
通过最充分的利用指令缓存代码, 而不是在每次函数调用时进行分支操作, 可以提高性能。
-fweb: 构建用于保存变量的伪寄存器网络。 伪寄存器包含数据, 就像他们是寄存器一样, 但是可以使用各种
其他优化技术进行优化, 比如cse和loop优化技术。
-fgcse-after-reload: 这中技术在完全重新加载生成的且优化后的汇编语言代码之后执行第二次gcse优化,
帮助消除不同优化方式创建的任何冗余段。
总结一下gcc的静态和动态库制作:
一、使用gcc制作
M
二、使用CMake
关于CMake
下此再说,今天从早到晚一直在忙,明天再更。