查看动态导出函数

方法一

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工具 查看静动态库导出函数相关推荐

  1. C++ 动态库导出函数名“乱码”及解决

    刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都"乱码"了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // 下列 ifdef ...

  2. C++ 动态库导出函数名乱码及解决

    刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都"乱码"了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // 下列 ifdef ...

  3. linux下怎么查看一个动态库链接了其他哪些库

    有时需要分析某个动态库有哪些依赖库,以此来分析可移植性 使用readelf -d命令 测试程序 hello.c #include <stdio.h> extern void test(vo ...

  4. linux命令之查看程序动态库依赖-ldd

    一个程序依赖很多的动态库,类似windows下的depends工具可以查看exe程序的依赖库是否找到.在linux下,可以通过ldd命令查看程序是否能找到依赖的动态库,从而排查是缺少库还是由于环境变量 ...

  5. linux动态库注册函数,Linux动态库函数的详解

    linux动态库函数的详解 加载动态库 void *dlopen(const char *filename, int flag); flag的可能值: rtld_lazy rtld_now rtld_ ...

  6. 如何让linux加载当前目录的动态库

    debian从7.0开始支持multiarch,64位库的路径改到/usr/lib/x86_64-linux-gnu了,mint.ubuntu这些衍生版有没有跟着改我就不清楚了. deepin lin ...

  7. Android-JNI开发系列《一》-动态库的函数注册

    JNI-动态库的函数注册 时光荏苒,距离上次的文章已经3年多了.那这3年干啥了呢?平凡生活,在人间凑数. 来吧,展示!show me you code 在Linux平台下so库分为动态库和静态库.表现 ...

  8. 【Android 逆向】函数拦截实例 ( 函数拦截流程 | ① 定位动态库及函数位置 )

    文章目录 一.函数拦截流程 二.定位动态库及函数位置 一.函数拦截流程 函数拦截流程 : 定位动态库及函数位置 : 获取该动态库在内存中的位置 , 以便于 查找函数位置 ; 插桩 : 在函数的入口处插 ...

  9. dumpbin发现没有入口函数_Dumpbin查看的dll/lib导出函数,不能重定向到文件问题

    Dumpbin.exe 是vs官方自动的查看dll.lib导出函数的利器. 找到dumpbin.exe 下面是我电脑中的位置: 不同平台下的dumpbin 需要同目录下 link.exe文件才能运行. ...

最新文章

  1. 随机森林模型的泛化能力为什么好 转
  2. C++编译器Qt Creator下载地址
  3. 似水流年,美丽清华园
  4. 为何Transformer在计算机视觉中如此受欢迎
  5. Scala 类和对象
  6. CF567E President and Roads
  7. LTE学习:空口降低时延关键技术
  8. hbase小版本升级
  9. 计算机辅助数控编程交互图形,第六章 计算机辅助数控编程.ppt
  10. pcan的dbc和project等的配置
  11. 单片机学习笔记(一)——概述
  12. 快速学习一门技术的逻辑
  13. Vue中使用pdfJs预览PDF、图片
  14. 鲁大师2022年度硬件榜单即将出炉,多维度看谁能夺奖?
  15. 哈代-温伯格平衡定律(The Hardy-Weinberg Equilibrium)
  16. excel文件如何取消打开密码
  17. 名词介绍 CAPEX OPEX
  18. 利用IPV6免费登QQ和打电话
  19. 软件测试的软件资源,软件测试都会都用到哪些工具?
  20. 运行django,一个非常可笑的错误Cannot resolve keyword 'price_gte' into field. Choices are: category,

热门文章

  1. Ironic 的 Rescue 救援模式实现流程
  2. Linux dmesg命令
  3. STM32 KEIL里的MAP文件分析
  4. 解密蚂蚁金服MISA:37℃的自助语音交互是怎么做到的?
  5. kotlin开发经验谈3
  6. Fiddler抓包使用教程-过滤
  7. [转] 使用nginx sticky实现基于cookie的负载均衡
  8. 【POJ】1505 Copying Books
  9. 满园尽是503,记曾经的一次IIS 7性能考验
  10. 浅谈ASP.NET中render方法