zoukankan      html  css  js  c++  java
  • 《深入理解计算机系统》第七章 学习总结


    (一)
    预处理器、编译器、汇编器和链接器
    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:列出一个可执行文件在运行时所需要的共享库。
  • 相关阅读:
    (六)知识蒸馏
    tensorflow(三十一):数据分割与K折交叉验证
    📚面试题 1 (46题)
    🍖drf 路由组件
    🍖drf 视图组件
    🍖drf 请求与响应
    🍖drf 序列化组件
    🍖DRF框架入门介绍
    如何在大学里脱颖而出(其一)
    reshape()改变数组的形状
  • 原文地址:https://www.cnblogs.com/20135223heweiqin/p/5361917.html
Copyright © 2011-2022 走看看