linux nm工具 查看静动态库导出函数
查看动态导出函数
方法一
nm -D **.so
但这样能看到所有的导出,乱七八糟的很多,筛选用:
nm **.so | grep XX
方法二
objdump -tT **.so
查看静态导出函数
nm -g --defined-only libxxx.a
nm 命令介绍
NAMEnm - list symbols from object filesSYNOPSISnm [-A|-o|--print-file-name] [-a|--debug-syms][-B|--format=bsd] [-C|--demangle[=style]][-D|--dynamic] [-fformat|--format=format][-g|--extern-only] [-h|--help][-l|--line-numbers] [-n|-v|--numeric-sort][-P|--portability] [-p|--no-sort][-r|--reverse-sort] [-S|--print-size][-s|--print-armap] [-t radix|--radix=radix][-u|--undefined-only] [-V|--version][-X 32_64] [--defined-only] [--no-demangle][--plugin name] [--size-sort] [--special-syms][--synthetic] [--target=bfdname][objfile...]DESCRIPTIONGNU nm lists the symbols from object files objfile.... If no objectfiles are listed as arguments, nm assumes the file a.out.For each symbol, nm shows:# ... run man nm for detials.
简单说的话,就是可以帮你列举出该目标中定义的符合要求的符号。要求可以很多,主要通过参数实现:外部引入的、内部定义的、动态的... 也可以添加参数使nm同时打印行号、文件名等相关信息。
nm 结果含义
nm 将找到的符号值使用十六进制缺省表示,并在函数前添加其类型,类型主要有:
Value | Descripition | Note |
---|---|---|
A | The symbol's value is absolute, and will not be changed by further linking. | 符号绝对,链接过程不会改变 |
B/b | The symbol is in the uninitialized data section (known as BSS). | 非初始化符号 |
C | The symbol is common. | 公有符号,链接时会被同名符号覆盖 |
D/d | The symbol is in the initialized data section. | 初始化符号 |
G/g | The symbol is in an initialized data section for small objects. | 初始化符号,面向小数据访问优化 |
I | The symbol is an indirect reference to another symbol. | 其它符号的间接引用 |
N | The symbol is a debugging symbol. | 调试符号 |
P | The symbols is in a stack unwind section. | 栈区符号(清空) |
R/r | The symbol is in a read only data section. | 符号只读 |
S/s | The symbol is in an uninitialized data section for small objects. | 非初始化符号,面向小数据访问优化 |
T/t | The symbol is in the text (code) section. | 代码区符号 |
U | The symbol is undefined. | 未定义或在外部定义的符号 |
u | The symbol is a unique global symbol. | 全局唯一,GNU保留符 |
V/v | The symbol is a weak object. | 弱定义符(详见C++强弱符号定义) |
W/w | The symbol is a weak symbol that has not been specifically tagged as a weak object symbol. | emm...绕口令符号 |
- | The symbol is a stabs symbol in an a.out object file. | stabs格式符号 |
? | The symbol type is unknown, or object file format specific. | NM也不认识的符号 |
简单的举个栗子:
rew@rew:/usr/lib64$ nm libpthread.anptl-init.o:U __default_pthread_attrU __default_pthread_attr_lockU _dl_cpuclock_offsetU _dl_get_tls_static_infoU _dl_init_static_tlsU _dl_pagesizeU _dl_wait_lookup_doneU __fork_generationU __getrlimitU __is_smpU __libc_fatal
0000000000000008 C __libc_multiple_threads_ptrU __libc_pthread_initU __libc_setup_tlsU __libc_sigactionU __libc_stack_endU __lll_lock_wait_privateU __lll_unlock_wake_private
0000000000000000 b __nptl_initial_report_events
00000000000001b0 T __nptl_set_robustU __nptl_setxid_error
0000000000000000 r nptl_version
00000000000004b0 T __pthread_get_minstack
00000000000001d0 T __pthread_initialize_minimal
00000000000001d0 T __pthread_initialize_minimal_internal
有了nm的分析结果搭配上符号定义的解释,就可以很愉快的找到想要的符号啦!
linux nm工具 查看静动态库导出函数相关推荐
- C++ 动态库导出函数名“乱码”及解决
刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都"乱码"了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // 下列 ifdef ...
- C++ 动态库导出函数名乱码及解决
刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都"乱码"了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // 下列 ifdef ...
- linux下怎么查看一个动态库链接了其他哪些库
有时需要分析某个动态库有哪些依赖库,以此来分析可移植性 使用readelf -d命令 测试程序 hello.c #include <stdio.h> extern void test(vo ...
- linux命令之查看程序动态库依赖-ldd
一个程序依赖很多的动态库,类似windows下的depends工具可以查看exe程序的依赖库是否找到.在linux下,可以通过ldd命令查看程序是否能找到依赖的动态库,从而排查是缺少库还是由于环境变量 ...
- linux动态库注册函数,Linux动态库函数的详解
linux动态库函数的详解 加载动态库 void *dlopen(const char *filename, int flag); flag的可能值: rtld_lazy rtld_now rtld_ ...
- 如何让linux加载当前目录的动态库
debian从7.0开始支持multiarch,64位库的路径改到/usr/lib/x86_64-linux-gnu了,mint.ubuntu这些衍生版有没有跟着改我就不清楚了. deepin lin ...
- Android-JNI开发系列《一》-动态库的函数注册
JNI-动态库的函数注册 时光荏苒,距离上次的文章已经3年多了.那这3年干啥了呢?平凡生活,在人间凑数. 来吧,展示!show me you code 在Linux平台下so库分为动态库和静态库.表现 ...
- 【Android 逆向】函数拦截实例 ( 函数拦截流程 | ① 定位动态库及函数位置 )
文章目录 一.函数拦截流程 二.定位动态库及函数位置 一.函数拦截流程 函数拦截流程 : 定位动态库及函数位置 : 获取该动态库在内存中的位置 , 以便于 查找函数位置 ; 插桩 : 在函数的入口处插 ...
- dumpbin发现没有入口函数_Dumpbin查看的dll/lib导出函数,不能重定向到文件问题
Dumpbin.exe 是vs官方自动的查看dll.lib导出函数的利器. 找到dumpbin.exe 下面是我电脑中的位置: 不同平台下的dumpbin 需要同目录下 link.exe文件才能运行. ...
最新文章
- 随机森林模型的泛化能力为什么好 转
- C++编译器Qt Creator下载地址
- 似水流年,美丽清华园
- 为何Transformer在计算机视觉中如此受欢迎
- Scala 类和对象
- CF567E President and Roads
- LTE学习:空口降低时延关键技术
- hbase小版本升级
- 计算机辅助数控编程交互图形,第六章 计算机辅助数控编程.ppt
- pcan的dbc和project等的配置
- 单片机学习笔记(一)——概述
- 快速学习一门技术的逻辑
- Vue中使用pdfJs预览PDF、图片
- 鲁大师2022年度硬件榜单即将出炉,多维度看谁能夺奖?
- 哈代-温伯格平衡定律(The Hardy-Weinberg Equilibrium)
- excel文件如何取消打开密码
- 名词介绍 CAPEX OPEX
- 利用IPV6免费登QQ和打电话
- 软件测试的软件资源,软件测试都会都用到哪些工具?
- 运行django,一个非常可笑的错误Cannot resolve keyword 'price_gte' into field. Choices are: category,