【编译】strip去除符号表

文章目录

  • 1. 去除符号表
  • 2. dbg信息的作用
    • 2.1 静态编译
    • 2.2 动态库编译方式

1. 去除符号表

作用:去除符号表可以极大缩小发布的二进制大小(有时候可以缩小一半)
去除手段共两种:

  1. 直接使用strip命令
  2. 使用objcopy(更常用)
# 直接使用strip命令
strip xxx.so
# objcopy
# 生成dbg信息
objcopy --only-keep-debug xxx.so xxx.dbg
# 去除符号表
objcopy --strip-debug --strip-unneeded --add-gnu-debuglink=xxx.dbg  xxx.so

查看符号表:

# objdump
objdump -t xxx

# readelf 
readelf -s xxx

2. dbg信息的作用

gdb功能基本上都围绕这符号表展开的,dbg信息主要给gdb使用,缺失dbg信息,对于静态库和动态库的影响程度不一样。

2.1 静态编译

静态库因为在装载的过程中没有重定位符号表的需求。 strip过程中会直接将其所有的符号表
去掉,这个时候可以查看静态编译产生的二进制没有任何符号表。这个时候可以说gdb无法打断点,无法查看调用栈,可以说根本没办法使用。

2.2 动态库编译方式

动态库的重定位发生在加载过程中,这个时候虽然去掉了符号表里面的.debug这个节,但是符号表还在。只是想要使用gdb --tui这种和c语言可视化调试界面用不了而已,而且大型项目中我们一般也不会使用这种调试方式。所以动态库去掉debug信息,对于gdb大部分功能没有影响(打断点、查调用栈、call函数、查内存地址)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/770568.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NodeJS 蔬菜自产零售混合销售平台-计算机毕业设计源码10149

摘 要 随着移动互联网的快速发展,购物方式也发生了巨大的变化。蔬菜作为消费者生活中必不可少的商品之一,在移动互联网时代也迎来了新的购物方式——购物小程序。购物小程序是一种基于手机应用平台的轻量级应用程序,用户可以通过它方便地浏览…

opencv编译报错OpenCV does not recognize MSVC_VERSION “1940“

具体如下: CMake Warning at cmake/OpenCVDetectCXXCompiler.cmake:182 (message):OpenCV does not recognize MSVC_VERSION "1940". Cannot set OpenCV_RUNTIME Call Stack (most recent call first):CMakeLists.txt:174 (include) 打开源码\opencv\sources\cmak…

springboot私人诊所管理系统-计算机毕业设计源码93887

摘要 随着科技的不断发展和医疗服务的日益普及,私人诊所管理系统成为现代医疗管理的重要组成部分。该系统通过引入计算机技术和互联网平台,为患者提供方便快捷的就诊方式,同时也为诊所、医院提供高效的资源管理和服务优化的途径。本文将介绍私…

Jlink调试的时候提示擦除超时,programming failed @ address 0x0804000

如果能正常下载进单片机,但是调试提示上面的信息。是keil的问题,把所有断点都取消了再调试就好了

Mybatis入门の基础操作

1 Mybatis概述 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的…

JavaScript中的this指向

1. 全局环境下的this 在全局环境中(在浏览器中是window对象,在Node.js中是global对象),this指向全局对象。 console.log(this window); // 在浏览器中为true console.log(this.document ! undefined); // true,因为…

若依前后端分离 前端路由登录页 如何进行跳转

路由守卫,看这篇文章 http://t.csdnimg.cn/HkypThttp://t.csdnimg.cn/HkypT

LLM推理引擎性能评测对比:vllm、lmdeploy、tensorrt-llm

01 简介 在当今LLM时代,大模型的效果已经取得了长足的进步,逐渐成为业务流程中的重要部分,因此对性能进行评估变得至关重要,由于目前LLM推理都需要比较高级的GPU,使得LLM推理成本高,因此在不同使用场景下…

VS2019+QT VS tools:Debug下ok,relese下报错

报错界面 踩得坑: 尝试一下重装 QT VS tools,结果装不上。 尝试卸载原来的QT VS tools:卸载方法,到下面文件夹下可以看到有两个文件夹,分别是两个插件,找到QT的插件,删除文件夹即可。但是删除…

基于深度学习网络的USB摄像头实时视频采集与火焰检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将usb摄像头对准一个播放火焰的显示器,然后进行识别,识别结果如下: 本课题中&#x…

实验七 SQL数据更新和视图

题目 (1)向商品类别表category中插入一条记录(801,‘座椅套’,‘各种品牌的汽车座套’) (2)向商品表product中插入一条记录:商品编号80101,商品名称“四季通…

汽车免拆诊断案例 | 2021款路虎揽胜运动版车遥控及一键起动功能失效

故障现象 一辆2021款路虎揽胜运动版车,搭载AJ20-P6H3L发动机,累计行驶里程约为2.5万km。车主反映,使用智能钥匙无法解锁车门,使用机械钥匙打开车门,进入车内,发现一键起动功能也失效;根据组合…

电脑录制视频的软件,电脑录制,4款免费软件推荐

在数字化时代,电脑录制视频的软件已成为我们日常生活和工作中的得力助手,这些软件可以帮助我们轻松捕获到屏幕上的精彩瞬间。但同时市面上的录制视频软件也层出不穷,让人不知该如何选择。到底怎样才能选择到一款适合自己的录屏软件呢&#xf…

实验4 宏指令及子程序设计实验

从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。 要求: 1)在屏幕上显示字符串提示信息的功能由宏指…

基于单片机的出租车计价器实验教学案例设计

摘 要 为了让学生加深单片机的理解,加强学生的单片机技术应用、实践动手、创新能力的培养,根据单片机课程设计教学情况精心设计了基于单片机的出租车计价器实验教学案例。本教学案例的基本原理是速度的检测,里程、价格的计算和显示。学生通…

Pylons 和 Flex 3

“Pylons” 和 “Flex 3” 是两个不同的技术,各自有着不同的背景和应用场景: Pylons Pylons 是一个 Python Web 框架,用于快速开发 Web 应用程序。它强调简单性、灵活性和可扩展性,以便开发人员能够快速构建和部署功能强大的 We…

如何在Linux上删除Systemd服务

Systemd是Linux 操作系统的系统和服务管理器,提供控制系统启动时启动哪些服务的标准流程。 有时,您可能出于各种原因需要删除systemd服务,例如不再需要、与其他服务冲突,或者您只是想清理系统。 Systemd使用单元文件来管理服务&…

【Linux】虚拟机安装 openEuler 24.03 X86_64

目录 一、概述 1.1 openEuler 覆盖全场景的创新平台 1.2 系统框架 1.3 平台框架 二、安装详细步骤 一、概述 1.1 openEuler 覆盖全场景的创新平台 openEuler 已支持 x86、Arm、SW64、RISC-V、LoongArch 多处理器架构,逐步扩展 PowerPC 等更多芯片架构支持&…

行车记录打不开:故障深度解析、恢复策略与预防指南

一、行车记录打不开的困境概述 行车记录仪,作为现代驾驶安全的重要辅助工具,不仅记录着每一次出行的点滴,更在关键时刻成为维护权益的关键证据。然而,当车主满怀期待地想要回顾或分享这些记录时,却遭遇了行车记录打不…