学习总结

Posted 20135223何伟钦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习总结相关的知识,希望对你有一定的参考价值。


(一)
预处理器、编译器、汇编器和链接器
gcc命令编译运行C语言:
  1. 预处理阶段:将*.c文件转化为*.i预处理过的C程序。

  2. 编译阶段:将*.i文件编译为汇编代码*.s文件。

  3. 汇编阶段:将*.s文件转化为*.o的二进制目标代码文件。

  4. 链接阶段:将*.o文件转化为可执行文件。

  5. 生成可执行文件:将*.o转换为可执行文件。

  6. 执行可执行C语言文件。

 

(二)目标文件:

三种形式:

  1. 可重定位文件(用来和其他object文件一起创建下面两种文件)——.o文件
  2. 执行文件(指出了应该从哪里开始执行)
  3. 共享文件(主要是.so文件,用来被链接编辑器和动态链接器链接)

(三)可重定位目标文件

ELF格式

(四)静态库链接

 

(五)可执行目标文件

(六)动态链接共享库

 

 

 

(七)处理目标文件的工具

AR:创建静态库,插入、删除、列出和提取成员。
STRINGS:列出一个目标文件中所有可打印的字符串。
STRIP:从目标文件中删除符号的信息。
NM:列出一个目标文件的符号表中定义的符号。
SIZE:目标文件中节的名字和大小。
READELF:显示一个目标文件的完整结构,包括ELF头中的编码的所有信息。包含SIZE和NM的功能。
OBJDUMP:所有二进制工具之母,能够显示一个目标文件中所有的信息。它最大的作用是反汇编.text节中的二进制指令。
LDD:列出一个可执行文件在运行时所需要的共享库。

 

以上是关于学习总结的主要内容,如果未能解决你的问题,请参考以下文章

20155325 2017-2018 1 《信息安全系统设计基础》 第十四周学习总结

2018-2019-1 20165206 《信息安全系统设计基础》第3周学习总结

20145205 《信息安全系统设计基础》第5周学习总结

学习总结:静态链接和动态链接

4月13日总结

Linux内核分析——第七周学习笔记20135308