gcc编译选项和使用

 

linux混混之牢骚:

万恶的金钱,有人为你卖儿卖女,有人为你去坐牢。在具有中国特色的社会主义制度下,剥削似乎并没有像《资本论》中所述那样消失,反倒日益的猖獗。富人,是我个人所能理解的,毕竟他们曾付出过。但富人中有一大批富不仁之人,开宝马撞人,砍手.....比比皆是。 是否真的要让富人消灭了穷人才能达到共同富裕的目标,才能使中国富强?这是个问题尴尬!linux结构复杂,但靠着大批量的程序员不断的奋战,也能将其捋顺,甚至完善。相比linux结构,国家结构复杂程度有过之而无后不及,难道却要靠靠那些大腹便便,红光满面,阿谀奉承,酒足饭饱,保养情人的官员来管理?会有效果吗?我们的未来……………………

 

GCC编译过程:

gcc编译程序时分为4个阶段:

1. 预处理(Pre-processing), 将文件包括的.h文件,宏定义等在文件中展开。

2. 编译(compiling),在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。

3. 汇编(Assembling),汇编阶段是把编译阶段生成的”.s”文件转成二进制目标代码,.o文件

4. 链接阶段(Link),在成功编译之后,就进入了链接阶段,将各个文件互相连接,检查外部变量函数等,生成目标文件。

命令操作:

gcc -E hello.c -o hello.i    hello.c文件经过  预编译        后生成hello.i文件。

 

gcc –S hello.i –o hello.s   或者

gcc –S hello.c –o hello.s   hello.c文件经过 预编译+编译     后生成hello.s文件,即汇编代码。

 

gcc –c hello.s –o hello.o    或者

gcc –c hello.c –o hello.o      hello.c文件经过 预编译+编译+汇编     后生成hello.o目标文件,即 机器代码。

 

gcc hello.o –o hello      或者

gcc hello.c –o hello              hello.c文件经过 预编译+编译+汇编+连接     后生成hello执行文件。


 

GCC选项:(注意大小写)

-E-----同上

-S-----同上

-c------同上

-o------输出文件的文件名

-O-----优化代码

-O2----优化代码,比-O更加优化

-I    -------#include<>这样的头文件,就在-I后面这个目录中找。#include"  " 这样的头文件,先在当前目录下寻找,如找不到再到-I目录下寻找。

-L  -------指定需要的库文件(.a  .so)文件所在的目录

-static -----静态编译,不使用各种库。 编译出的文件 较大

-D  ------------宏定义。 eg:gcc -DDEBUG   使用这样的命令,相当于在每个文件中都添加了 #define DEBUG  这个代码。

-g------------编译进去调试信息

 

objdump 和 readself

这两个都是gcc的工具,可以用于查看信息:

查看执行文件的汇编:

objdump  -D -S hello

查看执行文件使用的库的情况:

readself -a hello    静态库

readself  -d hello    动态库

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值