使用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 可以按大小排序输出。

相关推荐
光电笑映2 天前
深入C++异常:栈展开、异常安全与工程规范
开发语言·c++·c
程序员-King.4 天前
【基础分析】—— 条件变量wait(lock, 谓词)
c++·c·多线程·条件变量
REDcker4 天前
C++ std::move实现原理与vector扩容移动语义
开发语言·c++·c
itman3016 天前
C语言、C++与C#深度研究:从底层到现代开发演进全解析
c语言·c++·c·内存管理·编译模型
charlie1145141916 天前
嵌入式现代C++教程实战篇第12篇:C宏时代的LED驱动 —— 能跑但不优雅
c语言·c++·stm32·单片机·嵌入式硬件·c
咸鱼不用加盐7 天前
HC32F460 USB CDC通信异常:非对齐访问异常排查
单片机·arm·c·cm4
听风lighting8 天前
RTT-SMART学习 (二):启动过程
linux·c·rtt·rtos·rtt-smart
charlie1145141918 天前
通用GUI编程技术——图形渲染实战(三十)——Direct2D几何体系统:从路径到命中测试
开发语言·c++·windows·信息可视化·c·图形渲染·win32
听风lighting8 天前
RTT-SMART学习(一):环境搭建
linux·嵌入式·c·rtos·rtt-smart
magic3341656310 天前
ESP32S3开发环境介绍和创建工程
vscode·c·头文件