栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

gcc常见选项

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gcc常见选项

1、gcc概述

 

GNU计划提供的编译器。(在unix系统中,则是cc编译器)

2、由源文件到可执行文件需要经历的步骤
 
  1. 1.预处理:头文件展开(#include)、宏替换(#define)、条件编译(#ifdef)(.i)使用预处理器
  2. (预处理阶段处理的都是以#开头的代码)
  3. 2.编译:检查语法、转成汇编、生成汇编文件(.s/.S)使用编译器
  4. 3.汇编:由汇编变为目标代码(机器代码)生成目标文件(.o)使用汇编器as
  5. 4.链接:链接所有目标文件,生成可执行程序,使用链接器ld

3、 交叉编译

在宿主机下编程出在目标机下运行的代码的过程,这就是交叉编译。(首先需下载交叉编译器),即在当前cpu平台编译出在其他cpu平台运行的代码的过程。

4、编译选项

(1)-E:只进行预处理(.i)
gcc -E demo.c > demo.i :将预处理信息放到.i文件中

(2)-S:只激活预处理和编译,就是指把文件编译成为汇编代码。(.s/.S)

(3)-c:只激活预处理,编译,和汇编,也就是他只把程序做成obj文件(.o)

(4)-o:制定目标名称

(5)-g 生成调试信息。GNU 调试器可利用该信息。

(6)-I+路径:指定头文件的第三方搜索路径
#include “stdio.h”和#include 的区别:搜索路径不同
<>:在系统头文件目录(/usr/include)中搜索,若没有,则报错
“”:先在当前目录中搜索,若没有,则去系统头文件目录中搜索,若还没有,在报错
规范:<> :包含系统头文件 “”:包含自定义文件
(””虽然方便,但是大体量代码,仍需注意规范,提高编译效率)

(7)-L:把所有目标文件链接成可执行文件

(8)-static:强制使用静态链接库
默认情况下, GCC在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库

(9)-O1 -O2 -O3:编译优化
gcc -O1 demo.c -o demo :一级优化
gcc -O2 demo.c -o demo :二级优化
gcc -O3 demo.c -o demo :三级优化
(time ./demo:可以测算代码运行的时间)

(10)-w:关闭警告
gcc -w demo.c -o demo
(不推荐使用,警告可能不影响程序的执行,但忽视警告运行时可能会造成程序上的一些问题)

(11)-Wall:开启所有警告,使用它能够使GCC产生尽可能多的警告信息。
GCC给出的警告信息虽然从严格意义上说不能算作错误,但却很可能成为错误的栖身之所。一个优秀的Linux程序员应该尽量避免产生警告信息,使自己的代码始终保持标准、健壮的特性使用它能够使GCC产生尽可能多的警告信息。。所以将警告信息当成编码错误来对待,是一种值得赞扬的行为!

(12)-O1 -O2 -O3:编译优化
gcc -O1 demo.c -o demo :一级优化
gcc -O2 demo.c -o demo :二级优化
gcc -O3 demo.c -o demo :三级优化
(time ./demo:可以测算代码运行的时间)

Linux下的库文件分为两大类分别是动态链接库(通常以.so结尾)和静态链接库(通常以.a结尾),二者的区别仅在于程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。

静态库链接时搜索路径顺序:

  1. ld会去找GCC命令中的参数-L
  2. 再找gcc的环境变量LIBRARY_PATH
  3. 再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的

动态链接时、执行时搜索路径顺序:

  1. 编译目标代码时指定的动态库搜索路径
  2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
  3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径
  4. 默认的动态库搜索路径/lib
  5. 默认的动态库搜索路径/usr/lib

有关环境变量:
LIBRARY_PATH环境变量:指定程序静态链接库文件搜索路径
LD_LIBRARY_PATH环境变量:指定程序动态链接库文件搜索路径

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号