六个例子带你入门 size 命令
创始人
2024-03-01 22:28:50
0

正如你所知道的那样,Linux 中的目标文件或着说可执行文件由多个段组成(比如文本段和数据段)。若你想知道每个段的大小,那么确实存在这么一个命令行工具 —— 那就是 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...]

man 页是这样描述它的:

GNU 的 size 程序列出参数列表中各目标文件或存档库文件的段大小 — 以及总大小。默认情况下,对每个目标文件或存档库中的每个模块都会产生一行输出。

objfile... 是待检查的目标文件。如果没有指定,则默认为文件 a.out

下面是一些问答方式的案例,希望能让你对 size 命令有所了解。

Q1、如何使用 size 命令?

size 的基本用法很简单。你只需要将目标文件/可执行文件名称作为输入就行了。下面是一个例子:

size apl

该命令在我的系统中的输出如下:

How to use size command

前三部分的内容是文本段、数据段和 bss 段及其相应的大小。然后是十进制格式和十六进制格式的总大小。最后是文件名。

Q2、如何切换不同的输出格式?

根据 man 页的说法,size 的默认输出格式类似于 Berkeley 的格式。然而,如果你想的话,你也可以使用 System V 规范。要做到这一点,你可以使用 --format 选项加上 SysV 值。

size apl --format=SysV

下面是它的输出:

How to switch between different output formats

Q3、如何切换使用其他的单位?

默认情况下,段的大小是以十进制的方式来展示。然而,如果你想的话,也可以使用八进制或十六进制来表示。对应的命令行参数分别为 o-x

关于这些参数,man 页是这么说的:

-d

-o

-x

–radix=number

使用这几个选项,你可以让各个段的大小以十进制(-d--radix 10)、八进制(-o--radix 8);或十六进制(-x--radix 16)数字的格式显示。--radix number 只支持三个数值参数(8、 10、 16)。总共大小以两种进制给出; -d-x 的十进制和十六进制输出,或 -o 的八进制和十六进制输出。

Q4、如何让 size 命令显示所有对象文件的总大小?

如果你用 size 一次性查找多个文件的段大小,则通过使用 -t 选项还可以让它显示各列值的总和。

size -t [file1] [file2] ...

下面是该命令的执行的截屏:

How to make size command show totals of all object files

-t 选项让它多加了最后那一行。

Q5、如何让 size 输出每个文件中公共符号的总大小?

若你为 size 提供多个输入文件作为参数,而且想让它显示每个文件中公共符号(指 common segment 中的 symbol)的大小,则你可以带上 --common 选项。

size --common [file1] [file2] ...

另外需要指出的是,当使用 Berkeley 格式时,这些公共符号的大小被纳入了 bss 大小中。

Q6、还有什么其他的选项?

除了刚才提到的那些选项外,size 还有一些一般性的命令行选项,比如 v (显示版本信息)和 -h (可选参数和选项的汇总)。

除此之外,你也可以使用 @file 选项来让 size 从文件中读取命令行选项。下面是详细的相关说明:

读出来的选项会插入并替代原来的 @file 选项。若文件不存在或着无法读取,则该选项不会被替换,而是会以字面意义来解释该选项。文件中的选项以空格分隔。当选项中要包含空格时需要用单引号或双引号将整个选项包起来。通过在字符前面添加一个反斜杠可以将任何字符(包括反斜杠本身)纳入到选项中。文件本身也能包含其他的 @file 选项;任何这样的选项都会被递归处理。

结论

很明显,size 命令并不适用于所有人。它的目标群体是那些需要处理 Linux 中目标文件/可执行文件结构的人。因此,如果你刚好是目标受众,那么多试试我们这里提到的那些选项,你应该做好每天都使用这个工具的准备。想了解关于 size 的更多信息,请阅读它的 man 页


via: https://www.howtoforge.com/linux-size-command/

作者:Himanshu Arora 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

不一致的sizeof行为:
不一致的sizeof行为是指在不同的编译器或不同的平台上,size...
2025-01-11 08:31:45
不同文件使用size命令得...
这个问题可能是由于文件在编译时使用了相同的C库和内存布局而导致的。...
2025-01-09 21:00:10
不同的编译器对sizeof...
不同的编译器对sizeof()运算符显示不同的结果是因为在C/C+...
2025-01-08 12:01:56
不同的batch_size...
是的,不同的batch_size会影响RNN的训练结果。具体来说,...
2025-01-08 12:01:28
busybox下的size...
busybox在使用size选项时,需要使用-l参数来解析文件中的...
2025-01-08 03:31:32
不失去元素的情况下使用.r...
在Python中,可以使用NumPy库的resize()函数来调整...
2024-12-28 05:31:02

热门资讯

如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
硬核观察 #1249 LG 洗... #1 LG 洗衣机每天上传近 4GB 的数据?一个名为 Johnie 的 LG 洗衣机用户发现,他的...
2024 年 Linux 和开... 让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造...