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

相关推荐
zaim12 天前
计算机的错误计算(二百二十六)
java·python·c#·c·错数·mpmath
charlie1145141914 天前
通用GUI编程技术——Win32 原生编程实战(二十二)——GDI 位图操作:BitBlt、StretchBlt 与图像处理
c++·windows·学习·c·win32
Felven4 天前
M. Minimum LCM
c
charlie1145141914 天前
嵌入式C++教程实战之Linux下的单片机编程:从零搭建 STM32 开发工具链(5):调试进阶篇 —— 从 printf 到完整 GDB 调试环境
linux·c++·单片机·学习·嵌入式·c
REDcker8 天前
C++ new、堆分配与 brk / mmap
linux·c++·操作系统·c·内存
俊俊谢8 天前
LabVIEW如何排查和修复dll缺失问题
驱动开发·.net·labview·dll
qq_283720059 天前
C++ 基础:STL 原理介绍 + 实用技巧
c++·stl·c·模板库
mr_LuoWei200912 天前
《电子档案编制系统》软件开源
sqlserver·工具·dll·文档·exe·多媒体处理
4ever.ov012 天前
定时器/时间轮
开发语言·c++·c·muduo·llinux
REDcker15 天前
libevent、libev 与 libuv:对比、演进与实现原理
linux·c++·后端·编程·c·高并发·服务端