nm指令

NAME
       nm - display name list (symbol table)

SYNOPSIS
       nm  [  -agnoprumxjlfPA  [  s  segname sectname ]] [ - ] [ -t format ] [[ -arch
       arch_flag ]...] [ file ... ]

DESCRIPTION
       Nm displays the name list (symbol table) of each object file in  the  argument
       list.  If an argument is an archive, a listing for each object file in the ar-
       chive will be produced.  File can be of the form libx.a(x.o),  in  which  case
       only symbols from that member of the object file are listed.  (The parentheses
       have to be quoted to get by the shell.)  If no file is given, the  symbols  in
       a.out are listed.

Each  symbol  name is preceded by its value (blanks if undefined).  Unless the
       -m option is specified, this value is followed by one of the following charac-
       ters,  representing the symbol type: U (undefined), A (absolute), T (text sec-
       tion symbol), D (data section symbol), B (bss section symbol), C (common  sym-
       bol), - (for debugger symbol table entries; see -a below), S (symbol in a sec-
       tion other than those above), or I (indirect symbol).  If the symbol is  local
       (non-external),  the symbol‘s type is instead represented by the corresponding
       lowercase letter.  A lower case u in a  dynamic  shared  library  indicates  a
       undefined  reference  to  a  private  external  in  another module in the same
       library.

If the symbol is a Objective C method, the symbol name is  +-[Class_name(cate-
       gory_name)  method:name:], where `+‘ is for class methods, `-‘ is for instance

  methods, and (category_name) is present only when the method is in a category.

The output is sorted alphabetically by default.

eg: nm xxx.a > result.log

时间: 2024-10-08 16:47:32

nm指令的相关文章

命令行编译的基本指令

控制台下的编译: (实际苹果用的clang,将gcc换成clang也是一样的效果) gcc [options] <inputs> option常用的有 -o 链接 -c 将.c源文件编译成.o目标文件,不进行链接 gcc helloworld.c -c 将生成helloworld.o 需进一步输入 gcc helloworld.o -o helloworld 来生成最终的可执行文件helloworld. 而 gcc helloworld.c -c -o <随便一个名字> 能自定义生

linux下nm命令的使用

linux下强大的文件分析工具 -- nm 什么是nm nm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件.库文件.可执行文件中的符号表,返回二进制文件中各段的信息. 目标文件.库文件.可执行文件 首先,提到这三种文件,我们不得不提的就是gcc的编译流程:预编译,编译,汇编,链接. 目标文件 :常说的目标文件是我们的程序文件(.c/.cpp,.h)经过预编译,编译,汇编过程生成的二进制文件,不经过链接过程,编译生成指令为: gcc(g++) -c file.c(file.c

nm 命令能够显示目标文件中重载函数的名字改变(C++)

#include <stdio.h> #include <iostream> using std::cout; using std::endl; //这里的两个不同的add函数根据函数的参数个数不同,编译为目标文件后 //名字发生变化 int add(int x = 0, int y = 0) { return x + y; } int add(int x, int y, int z) { return x + y + z; } int main(void) { int a = 3

binutils工具集之---addr2line

addr2line用于得到程序指令地址所对应的函数,以及函数所在的源文件名和行号. 在不少嵌入式开发环境中,编译器的名称往往不是gcc,而是想arm-rtems-gcc这样的,对于这种命名形式的编译器,读者通常可以找到arm-rtems-addr2line ,arm-rtems-objdump等相应名称的工具,这是GNU工具集的一种命名惯例. 本文并不是binutils工具集的完整参考手册,当需要得到更为详细的帮助信息时,可以参照对应工具的man和info信息.另一个更为简单的方法时运行相应的工

8.19 打造VIM IDE 静态库 动态库制作

vim配置文件位置: /etc/vim/vimrc ~/.vimrc 打造IDE步骤 ,ta   ,nn 测试 使用大型IDE ,da      生成文档说明 ,dd      生成函数说明 ,jd       跳转函数 ,o         关闭其他窗口 ,bf 显示已经打开的文件列表 gcc参数的使用: linux下制作动态库,静态库,下面是文件结构图: 制作静态库,静态库以 .a 结尾: src里的makefile 生成 静态库文件 libcalc.a: gcc -c *.c ar rcs

使用pintools采集函数信息

pintool是intel推出的一个动态插桩工具. pin tool常用的有RTN接口(routine,我的理解就是程序上下文,比如汇编子程序,c/cpp函数之类),INS接口(指令级接口),Image(二进制文件镜像,lib或者exe) 我采用RTN模式捕获函数信息. PIN初始化流程如下: 在rtnfunc中插入在上下调用前和调用后的回调函数: btw:**IARG_FUNCARG_CALLSITE_VALUE, **这段比较诡异,同样的代码还存在于回调函数中, 这样的代码实际上是不可执行的

程序的静态链接

程序的静态链接 程序的产生 程序是由程序员编写,经过编译链接过程,最终能够在计算机中运行的东西.本质上来说编译链接过程其实就是将由人能看懂的代码段翻译成机器能看懂的代码段,然后指导机器的运行,比起程序在机器中被运行,博主更喜欢程序指导机器运行这样的说法. 编译链接事实上分为4个过程:预编译.编译.汇编.链接,在这里我们笼统地将其分为两个过程:编译和链接,编译包含预编译.编译.汇编. 编译是将程序员写的代码翻译成机器码,即机器能够解析的二进制码,生成二进制目标文件,既然编译过程已经生成了机器能够解

JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用

Session的追踪技术 已知Session是利用cookie机制的服务器端技术,当客户端第一次访问资源时 如果调用request.getSession() 就会在服务器端创建一个由浏览器独享的session空间,并分配一个唯一且名称为JSESSIONID的cookie发送到浏览器端,如果浏览器没有禁用cookie的话,当浏览器再次访问项目中的Servlet程序时会将JSESSIONID带着,这时JSESSIONID就像唯一的一把钥匙  开启服务器端对应的session空间,进而获取到sessi

OBJ文件格式分析工具: objdump, nm,ar

首先简要阐述关于gcc.glibc和 binutils模块之间的关系 一.关于gcc.glibc和binutils模块之间的关系 1.gcc(gnu collect compiler)是一组编译工具的总称.它主要完成的工作任务是"预处理"和"编译",以及提供了与编译器紧密相关的运行库的支持,如 libgcc_s.so.libstdc++.so等. 2.binutils提供了一系列用来创建.管理和维护二进制目标文件的工具程序,如汇编(as).连接(ld).静态库归档(