首页 > 代码库 > Linux下gcc、objdump、file命令使用方式总结
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命令是检测文件类型的命令,可以读取文件的编码体系以及一些其他信息
Linux下gcc、objdump、file命令使用方式总结