nm命令 查看一个可执行文件或者库的依赖库

摘要:
更详细的内容见manpage。
更详细的内容见man page。这里举例说明:

nm -u hello.o
显示hello.o 中的未定义符号,需要和其他对象文件进行链接.
nm -A /usr/lib/*2>/dev/null | grep "T memset"
在 /usr/lib/ 目录下找出哪个库文件定义了memset函数.
[root@localhost memzone]# nm -n -C  build/app/TestMalloc  |grep rte_malloc
00000000005b1b54 T rte_malloc_socket
00000000005b1bfc T rte_malloc
00000000005b1d40 T rte_malloc_validate
00000000005b1dc0 T rte_malloc_get_socket_stats
00000000005b1e20 T rte_malloc_dump_stats
00000000005b1f48 T rte_malloc_set_limit
00000000005b1f60 T rte_malloc_virt2iova
00000000005b23f4 T rte_malloc_dump_heaps
00000000005b2464 T rte_malloc_heap_get_socket
00000000005b2584 T rte_malloc_heap_socket_is_external
00000000005b2638 T rte_malloc_heap_memory_add
00000000005b2838 T rte_malloc_heap_memory_remove
00000000005b29a8 T rte_malloc_heap_memory_attach
00000000005b29d8 T rte_malloc_heap_memory_detach
00000000005b2a08 T rte_malloc_heap_create
00000000005b2b94 T rte_malloc_heap_destroy
[root@localhost memzone]# ldd build/app/TestMalloc
        linux-vdso.so.1 =>  (0x0000ffff88e20000)
        librt.so.1 => /lib64/librt.so.1 (0x0000ffff88dd0000)
        libm.so.6 => /lib64/libm.so.6 (0x0000ffff88d10000)
        libnuma.so.1 => /lib64/libnuma.so.1 (0x0000ffff88ce0000)
        libdl.so.2 => /lib64/libdl.so.2 (0x0000ffff88cb0000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000ffff88c70000)
        libc.so.6 => /lib64/libc.so.6 (0x0000ffff88ae0000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000ffff88aa0000)
        /lib/ld-linux-aarch64.so.1 (0x0000ffff88e30000)
[root@localhost memzone]# readelf -d build/app/TestMalloc

Dynamic section at offset 0x9efab0 contains 29entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libnuma.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x463ce8
 0x000000000000000d (FINI)               0xba6210
 0x0000000000000019 (INIT_ARRAY)         0xdff400
 0x000000000000001b (INIT_ARRAYSZ)       1696(bytes)
 0x000000000000001a (FINI_ARRAY)         0xdffaa0
 0x000000000000001c (FINI_ARRAYSZ)       8(bytes)
 0x000000006ffffef5 (GNU_HASH)           0x4002d0
 0x0000000000000005 (STRTAB)             0x436f08
 0x0000000000000006 (SYMTAB)             0x40d250
 0x000000000000000a (STRSZ)              163405(bytes)
 0x000000000000000b (SYMENT)             24(bytes)
 0x0000000000000015 (DEBUG)              0x0
 0x0000000000000003 (PLTGOT)             0xdfffe8
 0x0000000000000002 (PLTRELSZ)           5544(bytes)
 0x0000000000000014(PLTREL)             RELA
 0x0000000000000017 (JMPREL)             0x462740
 0x0000000000000007 (RELA)               0x4625c0
 0x0000000000000008 (RELASZ)             384(bytes)
 0x0000000000000009 (RELAENT)            24(bytes)
 0x000000006ffffffe (VERNEED)            0x462510
 0x000000006fffffff (VERNEEDNUM)         5
 0x000000006ffffff0 (VERSYM)             0x45ed56
 0x0000000000000000 (NULL)               0x0[root@localhost memzone]# 
[root@localhost memzone]# nm -Au  build/app/TestMalloc  |grep rte_malloc
[root@localhost memzone]# nm -A  build/app/TestMalloc  |grep rte_malloc
build/app/TestMalloc:00000000005b1bfc T rte_malloc
build/app/TestMalloc:00000000005b23f4 T rte_malloc_dump_heaps
build/app/TestMalloc:00000000005b1e20 T rte_malloc_dump_stats
build/app/TestMalloc:00000000005b1dc0 T rte_malloc_get_socket_stats
build/app/TestMalloc:00000000005b2a08 T rte_malloc_heap_create
build/app/TestMalloc:00000000005b2b94 T rte_malloc_heap_destroy
build/app/TestMalloc:00000000005b2464 T rte_malloc_heap_get_socket
build/app/TestMalloc:00000000005b2638 T rte_malloc_heap_memory_add
build/app/TestMalloc:00000000005b29a8 T rte_malloc_heap_memory_attach
build/app/TestMalloc:00000000005b29d8 T rte_malloc_heap_memory_detach
build/app/TestMalloc:00000000005b2838 T rte_malloc_heap_memory_remove
build/app/TestMalloc:00000000005b2584 T rte_malloc_heap_socket_is_external
build/app/TestMalloc:00000000005b1f48 T rte_malloc_set_limit
build/app/TestMalloc:00000000005b1b54 T rte_malloc_socket
build/app/TestMalloc:00000000005b1d40 T rte_malloc_validate
build/app/TestMalloc:00000000005b1f60 T rte_malloc_virt2iova
[root@localhost memzone]# nm -u  build/app/TestMalloc  |grep rte_malloc
[root@localhost memzone]# nm -a  build/app/TestMalloc  |grep rte_malloc
00000000005b1bfc T rte_malloc
0000000000000000a rte_malloc.c
00000000005b23f4 T rte_malloc_dump_heaps
00000000005b1e20 T rte_malloc_dump_stats
00000000005b1dc0 T rte_malloc_get_socket_stats
00000000005b2a08 T rte_malloc_heap_create
00000000005b2b94 T rte_malloc_heap_destroy
00000000005b2464 T rte_malloc_heap_get_socket
00000000005b2638 T rte_malloc_heap_memory_add
00000000005b29a8 T rte_malloc_heap_memory_attach
00000000005b29d8 T rte_malloc_heap_memory_detach
00000000005b2838 T rte_malloc_heap_memory_remove
00000000005b2584 T rte_malloc_heap_socket_is_external
00000000005b1f48 T rte_malloc_set_limit
00000000005b1b54 T rte_malloc_socket
00000000005b1d40 T rte_malloc_validate
00000000005b1f60 T rte_malloc_virt2iova

免责声明:文章转载自《nm命令 查看一个可执行文件或者库的依赖库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【jquery练习】横向滚动导航菜单移动端布局的心得下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Total Commander如何设置自定义快捷键在当前目录打开ConEmu

Total Commander,简称TC,原名Windows Commander,是Windows平台下功能最强大的全能文件管理器。 自从使用了TC基本上就很少再打开Window的文件夹了,因为TC不仅内置了很多功能,而且还有很多的插件可以扩展,所以大部分功能都可以直接在该软件里实现. TC提供了基本上所有的自定义功能,如自定义快捷键等,在TC的Ctrl...

怎么彻底关闭卸载删除Cortana小娜进程,最简单

原文地址:https://jingyan.baidu.com/article/90bc8fc8be67bcf653640cfa.html Win10中的Cortana是微软开发的一款个人AI助理,集聊天、通讯、提醒、娱乐和查询等等十八般武艺于一身。小娜虽然很厉害,但一些传统的Windows用户可能觉得这一功能比较鸡肋,想要卸载小娜。其实这也跟Win10中...

百度专家谈智能硬件测试探索

2013年-2018年,物联网整体规模呈现加速扩张趋势,智能设备数量直线增长。如下图: 2013年-2020年全球智能设备数量(亿台) 01 — 那什么是智能设备呢? 简单的说就是将硬件和app连接,通过软硬结合的方式,让传统设备附加到互联网,让其拥有智能化,并且通过移动软件app连接智能硬件,来实现对硬件的远程控制,例如共享单车、智能音箱、智能插座等几...

Alfred Workflow

实用的 Alfred Workflow Alfred Workflow 介绍 alfred-pkgman-workflow 快速从各个软件仓库(maven, gradle 等等)中查找需要的软件包 AlfredHanziSourceWorkflow 快速从象形字典、汉语字典、说文解字等站点查询字源 AlfredGoogleTranslat...

Redhat更新源

1.注册系统给我们提供了什么?如果我们点击系统的RHN,会提示注册系统的种种好处: 1)从官方获得软件源 2)免费或者系统的安装镜像和升级 3)系统故障以后,有专门的维护人员来协同我们处理 对于大部分人员,我们往往只关系,系统能否正常安装软件就够了。而redhat上yum的机理是这样的,通过yum读取配置文件/etc/yum.repos.d/file.re...

第十一章:直接内存(Direct Memory)

一、直接内存概述 1、不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 2、直接内存是在Java堆外的、直接向系统申请的内存区间; 3、来源于NIO,通过存在堆中的 DirectByteBuffer 操作 Native 内存; 4、通常,访问直接内存的速度会优于 Java 堆。即读写性能高; 因此出于性能考虑,读写频繁的场合可...