我在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;
}
谢谢!
答案 0 :(得分:1)
尺寸不同,因为您的目标文件只包含您的代码。链接文件还包括编译器C ++框架(即调用main所需的代码)和指向各种标准库(至少是C和C ++标准库)的链接。