大小端相关编译选项

Sunsuwan 于 2021-11-22 发布

大小端相关编译选项

编译器控制

使用命令

gcc -E -dM  - </dev/null

导出gcc编译器的所有编译选项,在其中搜索大小端相关宏

[root@localhost ~]# gcc -E -dM  - </dev/null | grep -i endian
#define __ORDER_LITTLE_ENDIAN__ 1234
#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __ORDER_PDP_ENDIAN__ 3412
#define __ORDER_BIG_ENDIAN__ 4321
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__

头文件控制

定义头文件为endian.h

[root@localhost ~]# grep -inr endian /usr/include/bits/endian.h
19:#ifndef _ENDIAN_H
20:# error "Never use <bits/endian.h> directly; include <endian.h> instead."
23:/* AArch64 can be either big or little endian.  */
25:# define __BYTE_ORDER __BIG_ENDIAN
27:# define __BYTE_ORDER __LITTLE_ENDIAN

宏定义排查位置

  1. Makefile 通过-D
  2. 编译选项 同上
  3. 编译器的预制宏
  4. 头文件