我正在编译一个程序来查找数组中的最大数字。
已编辑
我编译如下:
gcc --save-temps max.c -o max
然后继续做
ls -l max*
输出是:
-rwxrwxr-x 1 tapan tapan 7296 Aug 16 01:45 max
-rw-rw-r-- 1 tapan tapan 233 Aug 16 01:45 max.c
-rw-rw-r-- 1 tapan tapan 17894 Aug 16 01:45 max.i
-rw-rw-r-- 1 tapan tapan 1308 Aug 16 01:45 max.o
-rw-rw-r-- 1 tapan tapan 1507 Aug 16 01:45 max.s
我的问题是:为什么.s汇编文件的大小比.o二进制文件大?
我认为.o文件有二进制字符串,所以它会更大。
由于链接库的原因,最终文件的最大大小也符合预期。但是 .o 文件的大小让我认为 .o 文件没有二进制字符串,而是有其他东西。如果有错误的地方请指正。
最佳答案
如果“二进制字符串”指的是 ASCII 编码(即每个 0 或 1 都是 ASCII 字符 0x30 和 0x31),那么您可以在文本编辑器中打开该文件并查看 0001011011111101011101100...
,那么没有。只需使用 cat
或 od
(如果您使用的是 unix)或十六进制编辑器查看,它“直接”包含二进制数据。操作码 01001010
在二进制文件中占用一个字节,而不是 8 个 ASCII 字符(每个字符占用 1 个字节)。
关于c - linux .s 文件的大小大于 .o 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18261196/