linux nm命令
lux系统下nm命令是什么呢?下面是nm命令具体介绍
1、nm命令简介
nm命令是lux下自带的特定文件分析工具,一般用来检查分析二进制文件、库文件、可执行文件中的符号表,返回二进制文件中各段的信息。
目标文件常说的目标文件是程序文件(.c/.cpp,.h)经过预编译,编译,汇编过程生成的二进制文件,不经过链接过程,编译生成指令为
g(g++) -c file.c(file.cpp)
将生成对应的file.o文件,file.o即为二进制文件
库文件分为静态库和动态库,这里不做过多介绍,库文件是由多个二进制文件打包而成,生成的.a文件,示例
ar -rsc liba.a test1.o test2.o test3.o
将test1.o test2.o test3.o三个文件打包成liba.a库文件
可执行文件可执行文件是由多个二进制文件或者库文件(由上所得,库文件其实是二进制文件的集合)经过链接过程生成的一个可执行文件,对应wdows下的.exe文件,可执行文件中有且仅有一个ma()函数(用户程序入口,一般由bootloader指定,也可以改),一般情况下,二进制文件和库文件中是不包含ma()函数的,在lux下用户有绝对的自由,做一个包含ma函数的库文件也是可以使用的。
上述三种文件的格式都是二进制文件。
2、nm命令功能
目标文件、库文件中、可执行文件用编辑器是无法查看其内容的(乱码),所以当我们有这个需求(例如debug,查看内存分布的时候)去查看一个二进制文件里包含了哪些内容时,这时候就将用到一些特殊工具,lux下只有nm命令可以。
3、用法
man nm
4、常用命令参数
-A 或-o或 --prt-file-name打印出每个符号属于的文件
-a或--debug-syms打印出所有符号,包括debug符号
-BBSD码显示
-C或--demangle[=style]对低级符号名称进行解码,C++文件需要添加
--no-demangle不对低级符号名称进行解码,默认参数
-D 或--dynamic显示动态符号而不显示普通符号,一般用于动态库
-f format或--format=format显示的形式,默认为bsd,可选为sysv和posix
-g或--extern-only仅显示外部符号
-h或--help国际惯例,显示命令的帮助信息
-n或-v或--numeric-sort显示的符号以地址排序,而不是名称排序
-p或--no-sort不对显示内容进行排序
-P或--portability使用POSIX.2标准
-V或--version国际管理,查看版本
--defed-only仅显示定义的符号
趣事百科
- 秦海璐结过多少次婚 秦海璐有几次婚姻
- 女生身高多少算矮 女生身高多少以下算矮
- 地动仪是谁发明的 世界上第一架地动仪是谁发明
- 大兴安岭巨蛇事件 大兴安岭巨蛇事件真相
- 黄晓明宣布恋情 黄晓明公布新恋情
- 红色高跟鞋吉他谱 红色高跟鞋吉他谱G调弹唱
- 爱上黑社会老大:爱上黑社会老大的电影
- 安娜贝尔原型事件 安娜贝尔原型长什么样
- 李谷一的身高是多少 歌唱家李谷一身高多少厘米
- 霍思燕和江一燕什么关系 江一燕和霍思燕哪个更
- 三星堆为什么不敢研究了 三星堆为什么不敢挖掘
- 朱秀华事件:朱秀华事件骗局
- 方琼现任老公是谁 方琼老公个人资料
- 东来东往现状:东来东往是哪里人
- 太湖冤案事件真相 太湖冤案事件真相揭秘
- 双鱼玉佩恐怖的黑白照 双鱼玉佩黑白照片大全