【问题标题】:Compile c struct to bin file编译 c 结构到 bin 文件
【发布时间】:2016-07-06 15:30:34
【问题描述】:

我有一个 C 文件:

#include <stdint.h>

typedef struct {
  uint32_t m1;
  uint16_t m2;
} TStruct;

TStruct s = {
  1,
  2
};

如何用 gcc 编译这个文件以生成 little endian 二进制文件?

0x01 0x00 0x00 0x00 0x02 0x00

【问题讨论】:

  • 将其编译为使用小端序的拱形...而且您还必须注意对齐。

标签: c


【解决方案1】:

不过,Little-Endian 是所有标准配置的默认设置。其他配置的编译器工具包可以使用此开关来获取所需的格式。

    gcc file.c -mlittle-endian

你去吧..

【讨论】:

    【解决方案2】:

    我想把其他答案联系在一起。在小端机器(x86)上:

    evaitl@evbb ~/se $ cat foo.c 
    #include <stdint.h>
    
    typedef struct {
      uint32_t m1;
      uint16_t m2;
    } TStruct;
    
    TStruct s = {
      1,
      2
    };
    evaitl@evbb ~/se $ gcc -c foo.c 
    evaitl@evbb ~/se $ objcopy -O binary foo.o  foo
    evaitl@evbb ~/se $ hexdump -C foo
    00000000  01 00 00 00 02 00 00 00                           |........|
    00000008
    

    【讨论】:

      【解决方案3】:

      大概

      objcopy -O binary
      

      是您正在寻找的。请参阅[ this ] SO 答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多