大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这是一个非常罕见的命令,搞Linux开发的人, 才可能会用到nm命令,其他老男孩Linux运维等几乎用不到。
成都创新互联公司专注于文昌企业网站建设,响应式网站开发,电子商务商城网站建设。文昌网站建设公司,为文昌等地区提供建站服务。全流程按需定制制作,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
nm命令是names的缩写, nm命令主要是用来列出某些文件中的符号(说白了就是一些函数和全局变量等),具体查看,可以百度 搜 linux nm。
1、nm(纳米简写)1纳米=1毫微米(即十亿分之一米),就是约为10个原子的长度。假设一根头发的直径为0.05毫米,把它径向平均剖成5万根,每根的厚度即约为1纳米。
2、nm(公制纱支)公制纱支的意思。纺织品经纬纱粗细的单位统称;单位为s。另外英制纱支为:Ne。
3、nm(海里简写)海里是国际度量单位。1海里=1.852公里(千米) (中国标准)。标准符号n mile。《中华人民共和国法定计量单位》所用的符号是n mile。它等于地球椭圆子午线上纬度1分(一度等于六十分,一圆周为360度)所对应的弧长。
4、nm(linux命令)nm命令主要是用来列出某些文件中的符号。linux中,nm用来列出目标文件的符号清单。
5、nm(耐磨简写)耐磨材料是一大类具有特殊电、磁、光、声、热、力、化学以及生物功能的新型材料,是信息技术、生物技术、能源技术等高技术领域和国防建设的重要基础材料,同时也对改造某些传统产业,如农业、化工、建材等起着重要作用。
不是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]
[-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]
[-V|--version] [-X 32_64] [--help] [objfile...]
具体而言,nm用来列出目标文件的符号清单。
如果没有为nm命令指出目标文件,则nm假定目标文件是a.out。下面列出该命令的任选项,大部分支持“-”开头的短格式和“-“开头的长格式。
-A、-o或--print-file-name:在找到的各个符号的名字前加上文件名,而不是在此文件的所有符号前只出现文件名一次。
例如nmlibtest.a的输出如下:
CPThread.o:
00000068TMain__8CPThreadPv
00000038TStart__8CPThread
00000014T_._8CPThread
00000000T__8CPThread
00000000?__FRAME_BEGIN__
…………………………………
则nm-A的输出如下:
libtest.a:CPThread.o:00000068TMain__8CPThreadPv
libtest.a:CPThread.o:00000038TStart__8CPThread
libtest.a:CPThread.o:00000014T_._8CPThread
libtest.a:CPThread.o:00000000T__8CPThread
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:按目标文件中遇到的符号顺序显示,不排序。
-P或--portability:使用POSIX.2标准输出格式代替默认的输出格式。等同于使用任选项-fposix。
-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//删除一个模块
简单说的话,就是可以帮你列举出该目标中定义的符合要求的符号。要求可以很多,主要通过参数实现:外部引入的、内部定义的、动态的... 也可以添加参数使nm同时打印行号、文件名等相关信息。
nm 将找到的符号值使用十六进制缺省表示,并在函数前添加其类型,类型主要有:
简单的举个栗子:
有了nm的分析结果搭配上符号定义的解释,就可以很愉快的找到想要的符号啦!