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

编译链接实战(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.dtcms.com/a/251738.html

相关文章:

  • JVM 类加载过程/对象创建过程/双亲委派机制/垃圾回收机制
  • 大模型微调(Fine-tuning)概览
  • Vue-Leaflet地图组件开发(四)高级功能与深度优化探索
  • 基于51单片机的温度和液位监测系统(串口传输)
  • Vue 性能优化
  • kicad运行时出错,_Pnext->_Myproxy = nullptr;访问内存出错
  • 自我实现的量子隐喻:在可能性场域中动态拓展涌现节点
  • 安装前端vite框架,后端安装fastapi框架
  • Multisim仿真Buck电路基本拓扑
  • 进程和线程区别、管道和套接字、共享变量、TCP三次握手,是否可以少一次握手、子进程和主进程区别和API——Nodejs
  • Spring Cloud Gateway 全面学习指南
  • LabVIEW电路板焊点自动检测
  • 力扣刷题(第五十八天)
  • 【测开面试题】八股文总结
  • Kafka 可靠性保障:消息确认与事务机制(二)
  • 路由器端口映射怎么设置?本地固定内网IP给外面网络连接访问
  • MongoDB文档查询:从基础到进阶的探索之旅
  • Flask蓝图
  • AI 社交和AI情绪价值的思考 -延申思考2 -全局记忆
  • LLMs:《WebDancer: Towards Autonomous Information Seeking Agency》翻译与解读
  • PC16550 UART接收中断处理完整示例代码
  • 自定义Spring Boot Starter开发指南
  • python 将字典的值替换为键名作为变量名的形式(带缩进)
  • SCADA|KingSCADA4.0中历史趋势控件与之前版本的差异
  • 基于n8n快速开发股票舆情监控对话系统
  • Thinkless:基于RL让LLM自适应选择长/短推理模式,显著提升推理效率和准确性!!
  • 什么是java jdk?
  • LeetCode 第78题:子集
  • 基于Python爬虫的房价可视化
  • 统信UOS 操作系统源码制作openssh 10.0p2 rpm包——筑梦之路