我正在阅读带有 fread 的文件的第一个字节:
fread(&example_struct, sizeof(example_struct), 1, fp_input);
在 linux 和 solaris 下哪个结果不同?其中 example_struct (Elf32_Ehdr) 是 elf.h 中定义的标准 GNU C 库的一部分?我很高兴知道为什么会这样?
一般结构如下所示:
typedef struct
{
unsigned char e_ident[LENGTH];
TYPE_Half e_type;
} example_struct;
调试代码:
for(i=0;paul<sizeof(example_struct);i++){
printf("example_struct->e_ident[%i]:(%x) \n",i,example_struct.e_ident[i]);
}
printf("example_struct->e_type: (%x) \n",example_struct.e_type);
printf("example_struct->e_machine: (%x) \n",example_struct.e_machine);
Solaris 输出:
Elf32_Ehead->e_ident[0]: (7f)
Elf32_Ehead->e_ident[1]: (45)
...
Elf32_Ehead->e_ident[16]: (2)
Elf32_Ehead->e_ident[17]: (0)
...
Elf32_Ehead->e_type: (200)
Elf32_Ehead->e_machine: (6900)
Linux 输出:
Elf32_Ehead->e_ident[0]: (7f)
Elf32_Ehead->e_ident[1]: (45)
...
Elf32_Ehead->e_ident[16]: (2)
Elf32_Ehead->e_ident[17]: (0)
...
Elf32_Ehead->e_type: (2)
Elf32_Ehead->e_machine: (69)
可能类似于:http ://forums.devarticles.com/cc-help-52/file-io-linux-and-solaris-108308.html