当前位置: 首页 > ops >正文

编译链接实战(30)strip移除了哪些内容

文章目录

    • **1. 符号表(Symbol Table)**
      • **例外保留的符号**
    • **2. 调试信息(Debug Info)**
    • **3. 其他可能移除的内容**
    • **4. 不同 `strip` 模式的区别**
    • **5. 如何验证 `strip` 的效果?**
      • **(1) 检查符号表**
      • **(2) 检查调试信息**
      • **(3) 动态库的特殊检查**
    • **6. 注意事项**
    • **总结**

strip 命令主要用于移除二进制文件(如可执行文件、动态库 .so、静态库 .a)中的调试信息和符号表,以减少文件体积并提高安全性。以下是它移除的具体内容:


1. 符号表(Symbol Table)

strip 默认会移除以下符号表段:

  • .symtab
    存储函数名、全局变量名等静态符号信息,供调试和静态分析使用(如 nm 命令读取的内容)。
    • 影响:移除后无法通过 nm 查看函数名,但程序仍可运行。
  • .strtab
    存储符号名称的字符串表(.symtab 的辅助段)。
  • 局部符号(非外部可见符号)
    如编译时生成的临时变量名。

关于什么是段可以参看前面elf介绍的文章。

http://www.xdnf.cn/news/14312.html

相关文章:

  • java设计模式[3]之结构性型模式
  • Druid 连接池详解
  • 基于CSO算法的任务卸载在IoT移动边缘计算
  • 绝对收敛 趋于 0 的速度足够快 | 条件收敛 --> 项趋于 0 正负项相互抵消
  • 语言模型的泛化能力和训练数据依赖性
  • Docker -- 快速入门
  • JavaScript 数据结构详解
  • Java垃圾回收机制
  • [NLP]课程期末知识点总结
  • [windows工具]PDFOCR识别导出Excel工具1.1版本使用教程及注意事项
  • 【JVM】- 类加载与字节码结构3
  • 性能优化 - 高级进阶:JVM 常见优化参数
  • Linux内核网络协议的双重注册机制:inet_add_protocol与inet_register_protosw深度解析
  • Python小酷库系列:Python中的JSON工具库(3)
  • 行为设计模式之State(状态)设计模式
  • java中常见的排序算法设计介绍
  • IDEA21中文乱码解决办法
  • ubuntu 22.04设置时区和24小时制显示——筑梦之路
  • 【详细】CUDA开发学习教程清单
  • 【深度解析】Java高级并发模式与实践:从ThreadLocal到无锁编程,全面避坑指南!
  • Arcgis中,toolbox工具箱中工具莫名报错的解决方法
  • 【速写】policy与reward分词器冲突问题(附XAI阅读推荐)
  • LeetCode--31.下一个排列
  • 行为设计模式之Strategy(策略)
  • 网络编程(HTTP协议)
  • ShenNiusModularity项目源码学习(34:总结)
  • C/C++数据结构之漫谈
  • React-router、React-router-dom、React-router-native之间的区别
  • 基于深度强化学习的智能机器人路径规划系统:技术与实践
  • Flutter 本地存储全面指南:从基础到高级实践