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