正如你们中的一些人可能已经知道的那样,Linux中的对象或可执行文件由多个段(如txt和数据)组成。 如果您想知道每个段的大小,那么存在一个命令行实用程序 - 称为size - 为您提供此信息。 在本教程中,我们将使用一些易于理解的示例来讨论此工具的基础知识。
但在这之前,值得一提的是,本文中提到的所有示例都已在Ubuntu 16.04 LTS上进行了测试。
Linux size命令
size命令基本上列出了输入目标文件的段大小和总大小。 以下是该命令的语法:
size [-A|-B|--format=compatibility]
[--help]
[-d|-o|-x|--radix=number]
[--common]
[-t|--totals]
[--target=bfdname] [-V|--version]
[objfile...]
以下是手册页介绍该实用程序的方式:
GNU尺寸实用程序列出了每个对象或对象的截面尺寸---和总大小---归档文件objfile在其参数列表中。 默认情况下,为每个输出生成一行目标文件或存档中的每个模块。
objfile ...是要检查的对象文件。 如果没有指定,文件“a.out”就是默认文件。
以下是一些Q&A样式的示例,可以让您更好地了解size命令的工作原理。
Q1。 如何使用size命令?
size的基本用法非常简单。 您所要做的就是将对象/可执行文件名作为输入传递给工具。 以下是一个例子:
size apl
以下是在我们的系统上输出的上述命令:
前三个条目是用于文本,数据和bss段,具有相应的大小。 然后是十进制和十六进制格式的总数。 最后,最后一项是文件名。
Q2。 如何在不同的输出格式之间切换?
默认的输出格式,size手册页说,是类似于Berkeley的格式。 但是,如果你愿意,你也可以使用System V惯例。 为此,您必须将SysV的--format选项用作值。
size apl --format=SysV
这里是这种情况下的输出:
Q3。 如何在不同大小的单位之间切换?
默认情况下,段的大小以十进制显示。 然而,如果你愿意,你可以在八进制和十六进制中得到这些信息。 为此,请使用-o和-x命令行选项。
以下是手册页中关于这些选项的说明:
-d
-o
-x
--radix=number
使用这些选项之一,您可以控制每个部分的大小是否以十进制给出(-d或--radix = 10); 八进制(-o或-radix = 8); 或十六进制(-x或--radix = 16)。 在--radix = number,只支持三个值(8,10,16)。 总共大小以两种进制给出; -d或-x输出使用十进制和十六进制,如果使用则使用八进制和十六进制-o。
Q4。 如何使大小命令显示所有目标文件的总数?
如果您一次使用大小来查找多个文件的截面大小,那么如果您愿意,也可以让该工具提供所有列值的总和。 您可以使用-t命令行选项启用此功能。
size -t [file1] [file2] ...
以下屏幕截图显示了此命令行选项的作用:
输出中的最后一行已被-t命令行选项添加。
Q5。 如何在每个文件中打印常用符号的总大小?
如果您正在使用多个输入文件运行size命令,并希望命令在每个文件中显示常用符号,则可以使用--common命令行选项执行此操作。
size --common [file1] [file2] ...
值得一提的是,当使用Berkeley格式时,这些都包含在bss尺寸中。
Q6。其他可用的命令行选项有哪些?
除了直到现在讨论的那些之外,size还提供了一些通用命令行选项,如-v(用于版本信息)和-h(用于合格参数和选项的摘要)
另外,您还可以从文件中创建size读取命令行选项。这可以使用@file选项来完成。以下是与此选项相关的一些详细信息:
读取的选项将插入原始@file选项的位置。如果文件不存在,或者不能被读取,那么该选项将被逐字处理,而不会被删除。文件中的选项是以空格分隔。一个空白字符可能包含在一个选项中整个选项用单引号或双引号。任何字符(包括反斜杠)可能都是通过在包含在反斜杠中的字符加前缀来包含。该文件本身可能包含额外的@file选项;任何这样的选项将被递归处理。
结论