linux下动态库符号表,Linux动态库(.so)符号表
最近编译libbinder.so发现system/lib/libbinder.so只有358K,但单独编译生成的obj/SHARED_LIBRARIES/libbinder_intermediates/LINKED/libbinder.so有5M多,原因是前者做了strip命令操作。
1.动态链接库的符号表
动态链接库(shared object library)在linux里以.so结尾,是elf(Executable and Linkable Format)文件的一种,有两个符号表:“.symtab”和“.dynsym”。
.symtab:
包含大量的信息(包括全局符号global symbols)
.dynsym:
只保留“.symtab”中的全局符号
故“.dynsym”可看作“.symtab”的子集。故命令strip会去掉elf文件中“.symtab”,但不会去掉“.dynsym”。
2.为什么要strip?
这和ELF有关,ELF文件包含allocable/non-allocable ELF section。
allocable:
ELF包含一些sections(如code/data)是在运行时需要的,这些section被称为allocable。
non-allocable:
其他一些sections仅仅是linker/debuger等工具需要但运行时不需要,被称为non-allocable。
当Linker构建ELF文件时,把allocable/non-allocable分开存放,当OS加载ELF时,仅仅allocable数据被映射到内存,non-allocable的数据仍静静地呆在文件中不被处理。所以strip命令的作用就是移除non-allocable sections。
具体请参考动态链接库和符号.
3.如何查看符号表?
未被strip的so库:
执行nm libbinder.so即可(默认查看.symtab符号表)。
被strip的so库:
由于.symtab符号表被移出,需要加上-D参数,如nm -Do libbinder.so。否则使用nm时提示no symbol。
Android中编译binder库后生成目录有:
system/lib/libbinder.so:只有几百K
obj/SHARED_LIBRARIES/libbinder_intermediates/LINKED/libbinder.so:有几M。
文章结构:
动态链接库的符号表
为什么要strip
如何查看符号表
linux下动态库符号表,Linux动态库(.so)符号表相关推荐
- 一个Linux下的 俄罗斯方块游戏,基于 ncurse 库。。
2019独角兽企业重金招聘Python工程师标准>>> 几天前写得一个Linux下的 Tetris 游戏,基于 ncurses 库.. 望大家多多指教,功力太浅,多提代码的改进意见 ...
- linux环境下ps命令行,Linux下ps命令详解 Linux下ps命令的详细使用方法
Linux下ps命令详解 Linux上进程有5种状态:1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运 ...
- linux 下查看应用版本信息,Linux下查看版本信息
Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等. 1.# uname -a (Linux查看版本当前操作系统内核信息) 2.# cat /proc/vers ...
- linux下查看文件的权限,Linux下查看文件权限、修改文件权限的方法
查看权限命令查看目录的相关权限可以采用命令ls -lD,或者直接用ls -la 如 ls -l www.jb51.net //这里表示查看www.jb51.net目录 修改权限命令 chmod 77 ...
- linux下剪切文件怎么恢复,linux下文件夹的创建、复制、剪切、重命名、清空和删除命令...
在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinozzz 一.目录创建 在/home/wwwroot目录下新建一个sinozzz123的 ...
- linux格式化大于2t硬盘分区,linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区...
linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找 ...
- linux下能运行python,(转)Linux下运行python
原文: http://blog.csdn.net/jackywgw/article/details/48847187 在linux命令行下运行python,可以直接输出hello world jack ...
- linux下的zz命令,[zz]Linux下压缩命令
一.Linux下和windows下的压缩文件的几个说明 在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar.可是Linux就不同了,它有.gz..tar.gz.tgz. bz ...
- 马上6 linux客户端,三款 Linux 下的 Git 图形客户端 | Linux 中国
原标题:三款 Linux 下的 Git 图形客户端 | Linux 中国 了解这三个 Git 图形客户端工具如何增强你的开发流程. -- Jack Wallen 致谢 编译自 | https://ww ...
- linux下安装.hex文件,HexEdit Linux下命令集
Linux下Ganglia集群监控安装.配置笔记 http://www.blogjava.net/henry14/archive/2011/12/17/ganglia.html 枪声依旧 Linux下 ...
最新文章
- Android环境变量的设置(详细图解版)
- android 解压版sdk安装的问题
- node_modules
- 视图插入数据_SAP Fiori的ABAP编程模型-CDS视图创建
- 九度oj 1006 ZOJ问题 2010年浙江大学计算机及软件工程研究生机试真题
- ios-UIImageView的一些常用的方法
- 阿里云日志添加要查询字段
- Jenkins操作手册
- iosselect简单使用(三级联动)
- FreeWheel容力:如何打造更高质效的技术团队
- linux 可执行文件去除绝对路径
- mysql与php6_PHP与MySQL的连接
- 机器视觉技术在薄膜检测系统的应用
- Spring依赖注入的三种方式
- 19.深入浅出:正弦波振荡电路——参考《模拟电子技术基础》清华大学华成英主讲
- maven ojdbc6和ojdbc8 jar包下载地址
- 为unigui程序搭建chrome手机浏览器(B4A)
- 2019上半年个人成长复盘
- 科学家要用3D打印技术复制大脑,今后人类都可以“永生”了
- 不止跑路,拯救误操作rm -rf /*的小伙儿