linux 动态库文件stripped属性理解

Linux 交叉编译 1、交叉编译(Cross Compiler)是什么?为什么要交叉编译? 交叉编译是在一个平台上生成另一个平台上的可执行代码。 我们在Windows上面编写C51代码,并编译成可执行代码,如xxx.hex,是在C51上面运行,不是Windows上运行 我们在Ubuntu 上面编写树莓派的代码,并编译成可执行代码,如a.out,是在树莓派上运行,不是在Ubuntu Linux上面运行 编译:是在一个平台生成该平台上的可执行代码。 Stm32、C51:交叉编译的发生在keil(集成环境上面) 为什么要交叉编译: 阅读详情
AI摘要

本文解释了在 CentOS 6.2 下使用 file 命令查看 ELF 文件时,stripped 和 not stripped 的含义。介绍了 ELF 文件格式中的符号表作用及 strip 工具的使用方法。

在centos 6.2下用file命令查看文件信息的时候,显示如下:
libcom_err.so.2:      ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

libcrypto.so.10:      ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

libcrypt.so.1:        ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

libc.so.6:            ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

libdl.so.2:           ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
第一个最后显示的是stripped,第二个是not stripped。而且对于同样名字的动态库,带not stripped库会大很多。

所以由此想到会不会类似于gcc编译的时候加上调试信息的形式呢?
至少乍一看,对于这个名词都不是很懂,百度翻译了一下也不好用,那么到底是什么意思呢?
在一篇“elf文件格式与动态链接库”的博客里我们可以找到答案。
a.out和elf(Executable and Linking Format)。这两种格式中都有符号表(symbol table),其中包括所有的符号(程序的入口点还有变量的地址等等)。在elf格式中符号表的内容会比a.out格式的丰富的多。但是这些符号表可以用 strip工具去除,这样的话这个文件就无法让debug程序跟踪了,但是会生成比较小的可执行文件。a.out文件中的符号表可以被完全去除,但是 elf中的在加载运行时起着重要的作用,所以用strip永远不可能完全去除elf格式文件中的符号表。但是用strip命令不是完全安全的,比如对未连接的目标文件来说如果用strip去掉符号表的话,会导致连接器无法连接。

例如:

代码:

$:gcc -c hello.c 

$:ls hello.c hello.o

用gcc把hello.c编译成目标文件hello.o

代码:

$:strip hello.o

用strip去掉hello.o中的符号信息。

代码:

$:gcc hello.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o –o hello

/*

$:gcc hello.o /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/../../../crt1.o7

: In function `_start'

: init.c: (.text+0x18) 

: undefined reference to `main' collect2

: ld returned 1 exit status

*/ 

再用gcc连接时,连接器ld报错。说明在目标文件中的符号起着很重要的作用,如果要发布二进制的程序的话,在debug后为了减小可执行文件的大小,可以用strip来除去符号信息但是在程序的调试阶段还是不要用strip为好。

到此前面遇到的问题基本上也大概明白了。

Linux下编译Lua动态库:从-fPIC到符号导出的完整实践指南 动态链接库(.so文件)是现代软件工程中实现模块化与热更新的核心技术,其核心原理在于生成位置无关代码(PIC),确保库能在内存任意地址加载。在嵌入式系统与高性能服务场景中,将脚本引擎如Lua编译为动态库,能有效实现业务逻辑热更新、减少主程序体积并提升部署灵活性。本文聚焦于Lua动态库编译的工程实践,深入解析-fPIC编译选项与-Wl,-E符号导出等关键步骤,解决编译过程中的常见陷阱,为构建轻量级、可定制的脚本运行时环境提供完整解决方案。 阅读详情

相关推荐

IDA Pro 反编译 .so 文件实战:从加载到伪代码的完整链路

在移动安全与逆向工程中,ELF 共享库(.so)的静态分析是理解 native 层逻辑的关键手段。其核心原理是通过反汇编器将机器码还原为可读的伪代码,并借助符号恢复、交叉引用与字符串定位等技术,逐步还原函数调用链与关键校验逻辑。掌握这一能力,可显著提升 App 安全评估、恶意样本分析及跨平台兼容性排查的效率。典型场景包括定位 JNI 入口、识别加密函数与硬编码密钥。本文以 IDA Pro 为工具,系统梳理从架构识别、加载选项到反编译排错的完整操作链路,帮助读者快速建立可复现的分析流程。

weixin_26833139的博客 278

查看linux系统版本命令

一。查看内核版本命令: 1) [root@SOR_SYS ~]# cat /proc/version Linux version 2.6.18-238.el5 (mockbuild@x86-012.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-50)) #1 SMP Sun Dec 19 14:22:44 ES...

tomhibolu 3211

RK3506开发板实战:5分钟搞定开源鸿蒙OpenHarmony5.1+星闪功能配置

本文提供了一份基于RK3506开发板快速配置开源鸿蒙OpenHarmony 5.1并启用星闪功能的实战指南。文章详细介绍了从开发环境搭建、系统镜像编译烧录,到星闪驱动加载验证、应用开发及性能调优的全流程,帮助开发者高效上手,将新一代短距无线通信技术应用于物联网项目。

time3的博客 653

file 查看文件属性

如果想知道某个文件的基本信息,如:是属于ASCII,数据文件,还是二进制文件,且其中是否使用动态函数库(share library)等信息,就可以用  file 命令来查看。 //查看 ts_calibrate 这个可执行程序 root@root-desktop:/usr/local/tslib/bin$ file ts_calibrate ts_calibrate: ELF 32-bit

脚踏实地,仰望星空 1730

Vue3项目实战:集成h265webjs打造高性能Web端H.265播放器

本文详细介绍了如何在Vue3项目中集成h265webjs库,构建高性能的Web端H.265播放器。通过封装播放器管理模块、利用Vue3组合式API优雅管理生命周期,并提供了从环境准备、核心集成到进阶优化的完整实战指南,有效解决了浏览器原生不支持H.265解码的难题,显著降低视频流带宽占用。

weixin_29016833的博客 360

字节跳动高频111道核心前端面试题解析,web开发增强

但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。自定义指令(v-check、v-focus)的方法有哪些?v-model是什么?

2401_84094620的博客 1199

ELF可执行文件格式的理解

<br />yihect | 12 元月, 2011 09:13<br />ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用。可以说,ELF是构成众多xNIX系统的基础之一,所以作为嵌入式Linux系统乃至内核驱动程序开发人员,你最好熟悉并掌握它。<br />

2086

【NLP】文献翻译4——CH-SIMS:中文多模态情感分析数据集与细粒度的模态注释

CH-SIMS: A Chinese Multimodal Sentiment Analysis Dataset with Fine-grained Annotations of Modality摘要1. 介绍2. 相关工作2.1 多模态数据集2.2 多模态情感分析2.3 多任务学习3. CH-SIMS 数据集3.1 数据获取3.2 标注3.3 特征提取4. 多模式多任务学习框架4.1 单模态子网4.2 特征融合网络4.3 优化目标5. 实验5.1 基准5.2 实验的细节5.3 结果和讨论5.3.1 与

YoungSeng's Blog 1万+

linux动态库文件,linux 动态库文件stripped属性理解

在centos6.2下用file命令查看文件信息的时候,显示如下:libcom_err.so.2:ELF64-bitLSBsharedobject,x86-64,version1(SYSV),dynamicallylinked,strippedlibcrypto.so.10:ELF64-bitLSBsharedobject,x86-64,...

weixin_33668386的博客 902

手把手教你用RSoft BPM仿真一个1x2光分束器:从参数设置到结果分析全记录

本文详细介绍了使用RSoft BPM模块设计和仿真1×2光分束器的完整流程,包括参数设置、结构建模、仿真配置和结果分析。通过实战指南,帮助读者掌握光波导器件的仿真技术,实现50:50功率分配的设计目标,适用于光通信和集成光学领域的研究与应用。

weixin_30545945的博客 544

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2792

linux 动态库文件stripped属性理解(转)

在centos 6.2下用file命令查看文件信息的时候,显示如下: libcom_err.so.2: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped libcrypto.so.10: ELF 64-bit LSB shared object, x86-

diyinqian的博客 4793

精读204页华为的流程管理(文末附下载链接)

链接:https://pan.baidu.com/s/1eEwdBR5c0PIxkOrNhDZcGg?pwd=wha2 提取码:wha2 复制这段内容后打开百度网盘手机App,操作更方便哦。,以提升企业运营效率和竞争力,同时解决了诸多业务痛点,为华为的全球化发展提供了有力支撑。华为的流程管理对其发展起着关键作用,通过构建完善的流程体系,提升了企业运营效率与竞争力。华为的流程管理在企业发展中至关重要,其围绕。,并通过流程变革不断优化。在流程管理过程中,强调。构建了全面的流程体系。

cdfunlove的博客 282

13.【Linux系统编程】从ELF格式深入理解动静态库

本文聚焦 ELF(Linux/Unix 统一二进制文件格式),解析其编译链接核心作用。通过实例说明编译生成 ELF 目标文件(.o),拆解 ELF 头、程序头表、节头表及各类节的核心结构,梳理 “节合并为可执行文件、加载时转段” 的完整流程。借助 readelf 工具,明确程序头表(指导加载)与节头表(静态链接分析)的功能差异,最后点明节转段的核心价值 —— 减少内存碎片,提升 4KB 页面使用效率。

恢弘志士之气,不宜妄自菲薄 1026

在 SAP ECC 中定义 ledger 时遇到 “Define exactly one leading ledger“(消息号 FAGL_LEDGER_CUST012)的错误

摘要:SAP系统要求必须且只能定义一个主导分类账(Leading Ledger)。当出现错误消息FAGL_LEDGER_CUST012时,需通过事务码FINSC_LEDGER或SPRO路径检查分类账配置,确保仅有一个分类账被标记为"LeadingLedger",其余设为"Non-leadingLedger"。主导分类账是SAP默认用于标准报表的核心分类账,修改配置需谨慎以免影响已有数据。若问题未解决,建议检查未完成配置或查阅SAP Notes获取解决方案。

金牌架构师 801

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

系统编程之vim-gcc-动态库静态库-makefile-GDB调试

系统编程之vim-gcc-动态库静态库-makefile-GDB调试

qq_44759994的博客 1087

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

GCC编译实战:从单文件到多文件、静态库与动态库构建

编译是C语言开发的核心环节,GCC编译器作为Linux环境最常用的构建工具,其运行机制直接影响工程效率。GCC将源码到可执行文件的转换分为预处理、编译、汇编、链接四个阶段,其中目标文件(.o)和符号解析是理解多文件工程的基础。掌握单文件编译参数如-Wall、-g、-c,以及分步编译与增量编译策略,能显著提升构建速度;进一步理解静态库(.a)与动态库(.so)的制作和链接,则有助于模块化复用代码。实际开发中,undefined reference、头文件重复包含、优化级别引发的调试陷阱等高频问题,也是必须跨越

weixin_34054866的博客 417

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ZeroTermux 内置命令手册解析:nm 命令显示二进制目标文件符号表实战指南

ZeroTermux 在应用内以 [assets/cmd 目录](https://link.gitcode.com/i/372e3e8a4283864896d9d6456c4e8a46) 内置了数百份 Linux 命令中文手册,`nm` 命令文档是其中之一,用于指导用户在手机终端中查看二进制文件的符号表。本文以该内置文档为核心骨架,结合仓库源码与终端实现,完整讲解 `nm` 的语法、选项、符号类型

gitblog_00079的博客 721

Linux可执行文件全解析:ELF结构、加载机制与权限排查实战

在Linux系统中,可执行文件并非仅靠chmod +x就能运行,其底层涉及ELF格式、内核加载机制与权限模型的协同配合。ELF作为主流二进制格式,通过魔数、程序头与节头描述代码段、数据段及动态链接信息,而execve系统调用则完成从文件到进程的映射,并借助动态链接器解析共享库依赖。理解这一链路,不仅有助于解决常见的“Permission denied”“No such file or directory”等报错,还能为交叉编译、动态库调试及安全加固提供基础。在实际工程中,file、readelf、ldd、s

weixin_34318272的博客 263
上一篇: Makefile好助手:pkgconfig
下一篇: 聊聊x86设备上的GRUB
bitsjx
博客等级 码龄18年 57粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值