您的位置:首页 > 运维架构 > Linux

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

2014-09-25 17:27 309 查看
一、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命令是检测文件类型的命令,可以读取文件的编码体系以及一些其他信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: