使用nm查看.a文件时函数列表前方的前缀T、U等含义

在使用 nm 命令查看 .o 对象文件时,输出中的函数名或其他符号前缀有特定的含义:

  • T:表示该符号是一个文本(Text)符号,通常用于代码段(code section)。这意味着它是一个程序的代码入口点,比如一个函数的开始地址。

  • D:表示该符号是一个数据(Data)符号,通常用于初始化数据段(initialized data section)。这通常指的是全局变量或静态变量。

  • B:表示该符号是一个未初始化的全局或静态变量,位于未初始化数据段(BSS section)。

  • R:表示该符号是一个只读数据符号,通常用于只读数据段(read-only data section)。

  • C:表示该符号是一个常量(Constant),通常用于常量数据段。

  • U:表示该符号是未定义(Undefined)的,也就是说它在当前的 .o 文件中声明了,但是没有定义。这通常意味着它可能在其他 .o 文件或库中定义。

  • W:表示该符号是一个弱引用(Weak),它允许在其他编译单元中有相同名称的符号覆盖这个符号。

  • A:表示该符号是一个绝对地址的符号。

  • I:表示该符号是一个调试信息(Debugging)符号。

  • N:表示该符号是一个非标准(Non-standard)符号。

在使用 nm 命令时,你可以通过添加不同的选项来改变输出格式或过滤输出结果。例如,nm -D 可以以十六进制的形式显示地址,nm -S 可以按大小排序输出。

相关推荐
Molesidy17 小时前
【Embedded Development】 Keil或IAR如何制作静态库并装载入Keil或IAR工程当中进行编译烧录之库封装——lib库的生成
keil·lib·iar
anew___2 天前
蜂鸣器播放音乐——让 Arduino 唱出旋律
c++·stm32·单片机·嵌入式硬件·c
ysu4 天前
扫雷游戏设计分享
c
没文化的阿浩4 天前
【Linux系统】进程状态详解
android·linux·c++·c
2601_962300474 天前
halconpython联合开发网_C#与Halcon联合开发实例,并做了可移动的ROI库
图像处理·c·halcon·软件开发·roi
2601_962097364 天前
1. 使用 C 或 C++ 扩展 Python
python·api·c·引用计数·扩展模块
handler016 天前
【Linux】ELF、链接与动态库,程序装载全解析
linux·运维·服务器·chrome·c·elf·文件
C++ 老炮儿的技术栈7 天前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
handler017 天前
【Linux】信号:内核的“敲门声”
linux·运维·服务器·c++·c·信号·signal
handler017 天前
【Linux】动态库、静态库使用与原理
linux·运维·服务器·c++·c·动态库·静态库