c - linux .s 文件的大小大于 .o 文件

标签 c linux gcc object-files

我正在编译一个程序来查找数组中的最大数字。

已编辑

我编译如下:

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...,那么没有。只需使用 catod (如果您使用的是 unix)或十六进制编辑器查看,它“直接”包含二进制数据。操作码 01001010 在二进制文件中占用一个字节,而不是 8 个 ASCII 字符(每个字符占用 1 个字节)。

关于c - linux .s 文件的大小大于 .o 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18261196/

相关文章:

c++ - 将源文件包含在另一个源中

c - 在c中生成具有特定分布的随机数

ruby - gem install pg error : couldn't understand kern. osversion `14.0.0' on Yosemite w/Ruby 2.1.5

c++ - Poco RWLock - 对“pthread_rwlock_wrlock@@GLIBC_2.2.5”的 undefined reference

C 编程数据结构用户输入无法初始化结构类型 Visual Studio

c - 执行官和我;我怎样才能让它为我工作?

linux - 重定向到/dev/null 和简单地关闭流之间的有效区别是什么

python - 在没有附加库的情况下,在 shell 或 Python 中使用 SFTP 递归获取文件列表

linux - 如果在反引号中为变量分配命令表达式会发生什么

c++ - 本地程序到程序数据流的 TCP/IP 替代方案?