网站首页 > 文章中心 > 其它

linux中nm命令_LInux重启命令

作者:小编 更新时间:2023-09-06 11:38:40 浏览量:189人看过

Linux nm 命令使用及含义笔记

简单说的话,就是可以帮你列举出该目标中定义的符合要求的符号.要求可以很多,主要通过参数实现:外部引入的、内部定义的、动态的... 也可以添加参数使nm同时打印行号、文件名等相关信息.

nm 将找到的符号值使用十六进制缺省表示,并在函数前添加其类型,类型主要有:

简单的举个栗子:

有了nm的分析结果搭配上符号定义的解释,就可以很愉快的找到想要的符号啦!

linux系统C语言的nm是什么意思

linux中nm命令_LInux重启命令-图1

不是C语言吧?是系统命令.用来列举object文件(比如编译出的a.out)的symbols.

用法是:

nm [-a|--debug-syms] [-g|--extern-only]

[-B] [-C|--demangle[=style]] [-D|--dynamic]

[-S|--print-size] [-s|--print-armap]

[-A|-o|--print-file-name]

[-n|-v|--numeric-sort] [-p|--no-sort]

linux中nm命令_LInux重启命令-图2

[-r|--reverse-sort] [--size-sort] [-u|--undefined-only]

[-t radix|--radix=radix] [-P|--portability]

[--target=bfdname] [-fformat|--format=format]

[--defined-only] [-l|--line-numbers] [--no-demangle]

具体而言,nm用来列出目标文件的符号清单.

如果没有为nm命令指出目标文件,则nm假定目标文件是a.out.下面列出该命令的任选项,大部分支持"-"开头的短格式和"-"开头的长格式.

-A、-o或--print-file-name:在找到的各个符号的名字前加上文件名,而不是在此文件的所有符号前只出现文件名一次.

linux中nm命令_LInux重启命令-图3

例如nmlibtest.a的输出如下:

CPThread.o:

00000000?__FRAME_BEGIN__

.......................................

则nm-A的输出如下:

libtest.a:CPThread.o:00000000?__FRAME_BEGIN__

....................................................................

-a或--debug-syms:显示调试符号.

-B:等同于--format=bsd,用来兼容MIPS的nm.

-C或--demangle:将低级符号名解码(demangle)成用户级名字.这样可以使得C 函数名具有可读性.

-D或--dynamic:显示动态符号.该任选项仅对于动态目标(例如特定类型的共享库)有意义.

-fformat:使用format格式输出.format可以选取bsd、sysv或posix,该选项在GNU的nm中有用.默认为bsd.

-g或--extern-only:仅显示外部符号.

-n、-v或--numeric-sort:按符号对应地址的顺序排序,而非按符号名的字符顺序.

-p或--no-sort:按目标文件中遇到的符号顺序显示,不排序.

-s或--print-armap:当列出库中成员的符号时,包含索引.索引的内容包含:哪些模块包含哪些名字的映射.

-r或--reverse-sort:反转排序的顺序(例如,升序变为降序).

--size-sort:按大小排列符号顺序.该大小是按照一个符号的值与它下一个符号的值进行计算的.

-tradix或--radix=radix:使用radix进制显示符号值.radix只能为"d"表示十进制、"o"表示八进制或"x"表示十六进制.

--target=bfdname:指定一个目标代码的格式,而非使用系统的默认格式.

-u或--undefined-only:仅显示没有定义的符号(那些外部符号).

-l或--line-numbers:对每个符号,使用调试信息来试图找到文件名和行号.对于已定义的符号,查找符号地址的行号.对于未定义符号,查找指向符号重定位入口的行号.如果可以找到行号信息,显示在符号信息之后.

-V或--version:显示nm的版本号.

--help:显示nm的任选项.

ar cs libmy.a//创建一个库

ar rs libmy.a 1.o//增加一个模块

ar t libmy.a//显示库里的模块

ar d libmy.a 1.o//删除一个模块

Linux里面nm是什么意思?

这是一个非常罕见的命令,搞Linux开发的人, 才可能会用到nm命令,其他老男孩Linux运维等几乎用不到.

nm命令是names的缩写, nm命令主要是用来列出某些文件中的符号(说白了就是一些函数和全局变量等),具体查看,可以百度 搜 linux nm.

nm是什么意思?

在Red Hat Linux 中程序函数库可以分为哪几种类型? 它们的调用方法各是什么?请说出nm和ldd两个命令的作

静态函数库在应用程序编译时就把函数的执行代码加入到应用程序中.

共享函数库中的函数当一个可执行程序启动时被加载.

动态加载函数库可以在程序运行的任何阶段加载函数.

nm命令可以列出一个函数库文件中的符号表,它对静态的库函数和共享的库函数都能起作用.

ldd命令可以列出一个程序正常运行所需要的共享库.

如果库函数没有在这些目录下,可以在中加入所须目录,后运行ldconfig命令,使之生效.或设置环境变量LD_LIBRARY_PATH或LD_PRELOAD加入库函数所存放的目录.

还有不会的请参考<>,针对各种linux疑难杂症,帮助linux学习者.

以上就是土嘎嘎小编为大家整理的linux中nm命令相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章