📅  最后修改于: 2023-12-03 15:17:23.761000             🧑  作者: Mango
在Linux中使用nm命令可以查看编译器生成的二进制目标文件中的符号表信息,包括函数名、变量名等等。输出结果的第三列通常是一个字母,表示该符号的类型,其中T就是表示函数类型的符号。
在Linux下,可执行文件、静态库和动态库都具有符号表信息,选项-T可以在符号表中只显示类型为函数的符号。这就是输出结果中出现了T,并代表function type(函数类型)的原因。
举例来说,比如编写了一个名为test的C语言程序,其中包含了一个名为func的函数。使用gcc编译并链接该程序,生成可执行文件test。使用nm命令查看该可执行文件的符号表信息:
nm -C test
输出结果类似于:
080482e0 t __libc_csu_fini
08048340 t __libc_csu_init
08048404 t _start
08048440 T func
08048520 t main
080485b8 T __libc_csu_init
080485c4 T __libc_csu_fini
可以看到,符号表中包含了函数func,它的类型为T(Function),是一个可执行函数。
除了函数类型符号T,nm命令的输出结果中还有其它一些类型符号,它们分别表示不同类型的符号。下面是一些常见的类型符号及其含义:
在Linux中使用nm命令可以查看编译器生成的二进制目标文件中的符号表信息,包括函数名、变量名等等。输出结果的第三列通常是一个字母,表示该符号的类型,其中T就是表示函数类型的符号。同时,输出结果中还包含了其它一些类型符号,它们分别表示不同类型的符号。了解这些类型符号的含义可以帮助我们更好地理解符号表信息。