Linux下gcc、objdump、file命令使用方式总结

一、GCC编译器和常用命令

 

gcc编译器不仅支持c语言,还支持Ada、C++、Objective-C语言。一般编译的过程可以分为四个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)

 

1、  一步到位的编译指令

包含四个阶段

gcc test.c –o test

2、  预处理

将头文件内容插入到test.c文件,-E是预处理结束后停止,并输出预处理结果

gcc –E test.c –o test.i

3、  编译

对.i文件编译,生成汇编代码,-S表示生成汇编代码后停止,-o输出汇编代码文件

gcc –S test.i –o test.s

4、  汇编

将汇编代码文件编译为目标文件

gcc –c test.s –o test.o

5、  连接

将其与C标准输入输出库进行连接,最终生成程序test

gcc test.o –o test

6、  执行

在命令行窗口,执行./test

 

不同文件代表的意义:

test.c(源文件)->test.i(-E预处理后文件)->test.s(-S汇编文件)->test.o(-c目标文件)->test(-o可执行文件)

 

对于多个源文件进行编译:

1、  一步到位

gcc  test1.c  test2.c –o test

2、  复杂一些的(执行过程和一步到位的是一样的,都是预处理->编译->连接)

gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test

 

常用命令选项的意义:

1、-c 只编译不连接

2、-O 优化编译后的代码,后面加数字代表优化级别

3、-o 指定输出的文件名

4、-v 显示编译过程中每一步用到的命令

 

二、objdump命令的使用

 

objdump是Linux下面的反汇编目标文件或者可执行文件的命令

 

1、objdump –d test

反悔表test中需要执行指令的那些section

 

2、  objdump –h test

显示test的Section Header信息

 

3、  objdump –S test.o

输出C源代码和反汇编出来的指令对照的格式

 

4、  objdump –h

显示目标文件各个section的头部摘要信息

 

5、  objdump –r

显示文件的重定位入口

 

6、  objdump –t显示文件的符号表入口

 

三、file命令

 

file命令是检测文件类型的命令,可以读取文件的编码体系以及一些其他信息

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。