linux 查看 *.a *.so 符号表(zt)】的更多相关文章

objdump -tT libName.so | grep symbel symbolName nm -D libName.so | grep symbel symbolName 很多非常熟悉windows 进程依赖那个dll,使用depends,linux使用ldd命令.查看函数windows使用dumpbin,linux使用objdump -tT libCavium4J.so |grep generateKeynm -D libCavium4J.so  |grep generateKey 转…
使用objdump objcopy查看与修改符号表动态库Linuxgccfunction    我们在 Linux 下运行一个程序,有时会无法启动,报缺少某某库.这时需要查看可执行程序或者动态库中的符号表,动态库的依赖项, Linux 有现成的工具可用:objdump .    有时我们拿到一个静态库,想调用其中的函数,而某些函数作用域非全局,也可以通过修改符号来达到目的. Linux 有现成的工具可用: objcopy . 下面我们来看看具体怎么使用.    objdump 是 gcc 套件中…
转自:https://blog.csdn.net/whb_fei/article/details/76974543 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/whb_fei/article/details/76974543 GCC制作动态链接库时默认会将所有的函数及变量都导出到符号表,这里的函数及变量指的是没有使用static修饰的,使用static修饰的函数及变量不会导出.正常情况下所有符号均导出是不会有问题的,但是有时会有问题,在下边的…
符号表是编译期产生的一个hash列表,随着可执行文件在一起 示例程序 int a = 10; int b; void foo(){ static int c=100; } int main(){ int d=1000; int e; foo(); } 符号表包括了变量和函数的信息,以及调试信息,可以通过nm 命令查看符号表 $nm -a 0000000000000000 a 0000000000004028 D a 0000000000004034 B b 0000000000004030 b…
insmod使用公共内核符号表来解析模块中未定义的符号.功能内核符号表中包含了所有全局内核项(函数和变量)的地址,这是实现模块化驱动程序所必须的.当模块装载到内核后,它所导出的任何符号都会变成内核符号表的一部分.通常情况下,模块只需要实现自己的功能,无需导出任何符号,但是如果其他模块想要使用该模块的某函数或变量,就需要导出符号:通过导出符号,在可以在其他模块上层叠新的模块.通过模块层叠可将模块划分为多个层,简化每个层可缩短开发时间. Linux提供了一个方法来管理符号对模块以外部分的可见性,从而…
我们已经看到 insmod 如何对应共用的内核符号来解决未定义的符号. 表中包含了全局内 核项的地址 -- 函数和变量 -- 需要来完成模块化的驱动. 当加载一个模块, 如何由模块 输出的符号成为内核符号表的一部分. 通常情况下, 一个模块完成它自己的功能不需要输 出如何符号. 你需要输出符号, 但是, 在任何别的模块能得益于使用它们的时候. 新的模块可以用你的模块输出的符号, 你可以堆叠新的模块在其他模块之上. 模块堆叠在 主流内核源码中也实现了: msdos 文件系统依赖 fat 模块输出的…
linux的文件系统及节点表 一  linux的文件系统1 我们都知道当我们安装linux时会首先给系统分区,然后我们会把分区格式化成EXT3格式的文件系统.那么在linux系统中还有没有其他的文件系统呢,下面我们就简单的介绍一下linux系统中常见的几种文件系统.(1)EXT3文件系统:ext3(第三级扩展linux文件系统,third extended linux filesystem).跟EXT2文件不同之处就是增加了日志功能.(2)EXT2和MSDOS:一般用于软盘(3)ISO9660:…
转自:https://blog.csdn.net/swedenfeng/article/details/53417085 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/swedenfeng/article/details/53417085 1) 如何生成不含符号表的目标文件 ? #一个方式是编译的时候使用 选项 s root@root2768:~/test_c>gcc -s test1.c root@root2768:~/test_c> ob…
转自 http://blog.sina.com.cn/s/blog_67eb1f2f0100mgd8.html ldd <可执行文件名>       查看可执行文件链接了哪些  系统动态链接库nm <可执行文件名>       查看可执行文件里面有哪些符号strip <可执行文件名>      去除符号表可以给可执行文件瘦身如果我们想从可执行程序里面提取出来一点什么文本信息的话,还可以用strings命令strings <可执行文件名> Linux操作系统上…
当一个工程中有多个文件的时候,链接的本质就是要把多个不同的目标文件相互粘到一起.就想玩具积木一样整合成一个整体.为了使不同的目标文件之间能够相互粘合,这些目标文件之间必须要有固定的规则才行.比如目标文件B用到了目标文件A中的函数”foo”,那么我们就称目标文件A定义了函数foo,目标文件B引用了函数foo.每个函数和变量都有自己独特的名字,避免链接过程中不同变量和函数之间的混淆.在链接过程中,我们将函数和变量统称为符号.函数或者变量名就是符号名 每一个目标文件都会有一个相应的符号表,这个表里面记…