对象文件和可执行文件之间各种字段大小的差异

时间:2012-02-29 04:36:04

标签: c++ g++ size executable object-files

我在linux中使用size命令获得了以下信息,用于示例c ++程序。

text    data     bss     dec     hex   filename
1908     304     152    2364     93c   test
 346       4       1     351     15f   test.o

我已经读过输出的大小; text是实际代码,bss包含未初始化的全局变量,数据作为初始化和未初始化段的添加。我的问题是为什么目标文件和可执行文件的大小不同,特别是在文本中,因为源代码在内存中很常见?如果没有全局变量,为什么显示bss的大小?

示例代码文件包含如下:

#include <iostream>

using namespace std;

   int main()
   {
      cout << "Hello World!" << endl ;

      return 0;
   }

谢谢!

1 个答案:

答案 0 :(得分:1)

尺寸不同,因为您的目标文件只包含您的代码。链接文件还包括编译器C ++框架(即调用main所需的代码)和指向各种标准库(至少是C和C ++标准库)的链接。