当前位置: 技术问答>linux和unix
Solaris下编译器版本不同,编译后的物件大小不同?
来源: 互联网 发布时间:2016-04-07
本文导语: 请教高手: 我在Solaris5.8下通过两个不同版本的C编译器对程序进行编译,获得的可执行文件大小相差很大,不知道什么原因? 编译器1:Forte Developer 6 update 2(Sun WorkShop 6 update 2),C Compiler版本5...
请教高手:
我在Solaris5.8下通过两个不同版本的C编译器对程序进行编译,获得的可执行文件大小相差很大,不知道什么原因?
编译器1:Forte Developer 6 update 2(Sun WorkShop 6 update 2),C Compiler版本5.3
编译器2:Sun™ Studio 11,C Compiler版本5.8
通过编译器1编译的可执行文件比通过编译器2编译的文件大一倍,不知道什么原因?
下面是程序中头文件定义的一个结构体:
static struct _MessageTable
{
int msgid;
char msg[1024];
int level;
char outputID;
char footer_flag;
} sMessageTable[] =
{
{1, "This is a test program 1.", 2, 1, 0},
{2, "This is a test program 2.", 2, 1, 0},
{3, "This is a test program 3.", 2, 1, 0},
…………………………
{51, "This is a test program 51.", 2, 1, 0},
{52, "This is a test program 52.", 2, 1, 0}
}
我在Solaris5.8下通过两个不同版本的C编译器对程序进行编译,获得的可执行文件大小相差很大,不知道什么原因?
编译器1:Forte Developer 6 update 2(Sun WorkShop 6 update 2),C Compiler版本5.3
编译器2:Sun™ Studio 11,C Compiler版本5.8
通过编译器1编译的可执行文件比通过编译器2编译的文件大一倍,不知道什么原因?
下面是程序中头文件定义的一个结构体:
static struct _MessageTable
{
int msgid;
char msg[1024];
int level;
char outputID;
char footer_flag;
} sMessageTable[] =
{
{1, "This is a test program 1.", 2, 1, 0},
{2, "This is a test program 2.", 2, 1, 0},
{3, "This is a test program 3.", 2, 1, 0},
…………………………
{51, "This is a test program 51.", 2, 1, 0},
{52, "This is a test program 52.", 2, 1, 0}
}
|
对char msg[1024]; 的处理不同。