/usr/include/sys/types.h 中的宏

本文解析了C语言中复杂的宏定义与类型定义技巧,包括#ifdefined与#ifdef的区别,以及如何使用##操作符来创建固定宽度的整数类型。通过实际代码示例,详细解释了__attribute__和__mode__属性的使用,确保类型大小与编译器无关。
1. #ifdef 与 #if defined
  • 在/usr/include/sys/types.h中有一个宏是这样写的:
#if defined __USE_LARGEFILE64 && !defined __ino64_t_defined
typedef __ino64_t ino64_t;
# define __ino64_t_defined
#endif

第一次看到#if defined有点懵,不明白与#ifdef有什么区别,C语言中文网是这样说的:

  • #if 后面跟的是“整型常量表达式”,而 #ifdef#ifndef后面跟的只能是一个宏名,不能是其他的
  • 后面接的是一个宏的话#ifdef可以认为是 #if defined的缩写

2.##
  • 代码如下
/* For GCC 2.7 and later, we can use specific type-size attributes.  */
# define __intN_t(N, MODE) \
  typedef int int##N##_t __attribute__ ((__mode__ (MODE)))
# define __u_intN_t(N, MODE) \
  typedef unsigned int u_int##N##_t __attribute__ ((__mode__ (MODE)))

# ifndef __int8_t_defined
#  define __int8_t_defined
__intN_t (8, __QI__);
__intN_t (16, __HI__);
__intN_t (32, __SI__);
__intN_t (64, __DI__);
# endif

__u_intN_t (8, __QI__);
__u_intN_t (16, __HI__);
__u_intN_t (32, __SI__);
__u_intN_t (64, __DI__);
  • 关于####的用法可以参考维基百科–预处理指令和宏,总结一下就是
    • 使用#会导致#后面的第一个参数作为带引号的字符串返回
    • 使用####之前的内容与##之后的内容连接起来,也可以使用常量前缀或后缀连接宏参数以获得有效标识符
  • attribute 的语法可以参考官方文档、或简书上的一篇博客
    • 在这段代码中, __attribute __ 用来修饰类型的属性,__mode __属性没有搜索到官方的说明,stackoverflow上有类似的提问,ok,注释也说了可以使用大小属性来修饰这些类型。
    • __intN_t (8, __QI__);展开后变成:
      __int8_t __attribute__ ((__mode__ (__QI__)))
      即指定__int8_t的宽度为最小的可寻址单元的宽度,即8bytes

总之,下面这些类型的大小与编译器无关
int8_t
int16_t
int32_t
int64_t

另外,我在大部分types.h中找到了下面这些类型的定义:

typedef int register_t __attribute__ ((__mode__ (__word__)));
typedef __mode_t 	mode_t;
typedef __ssize_t 	ssize_t;
typedef __pid_t 	pid_t;
typedef __gid_t 	gid_t;
typedef __uid_t 	uid_t;
typedef __id_t 		id_t;
typedef __key_t 	key_t;
typedef __off_t 	off_t;
typedef __daddr_t 	daddr_t;
typedef __caddr_t 	caddr_t;
typedef __nlink_t 	nlink_t;
typedef __loff_t 	loff_t;
typedef __ino_t 	ino_t;
typedef __dev_t 	dev_t;

说明:上述内容为个人总结,如果有错误、不通、不严谨的地方希望留言指出。

HOSTCC scripts/basic/fixdep UPD scripts/kconfig/mconf-cfg HOSTCC scripts/kconfig/mconf.o In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:13:9: error: unknown type name ‘u32’ 13 | typedef u32 __kernel_dev_t; | ^~~ /usr/include/linux/types.h:20:9: error: unknown type name ‘u32’ 20 | typedef u32 nlink_t; | ^~~ /usr/include/linux/types.h:93:9: error: unknown type name ‘u8’ 93 | typedef u8 u_int8_t; | ^~ /usr/include/linux/types.h:94:9: error: unknown type name ‘s8’ 94 | typedef s8 int8_t; | ^~ /usr/include/linux/types.h:95:9: error: unknown type name ‘u16’ 95 | typedef u16 u_int16_t; | ^~~ /usr/include/linux/types.h:96:9: error: unknown type name ‘s16’ 96 | typedef s16 int16_t; | ^~~ /usr/include/linux/types.h:97:9: error: unknown type name ‘u32’ 97 | typedef u32 u_int32_t; | ^~~ /usr/include/linux/types.h:98:9: error: unknown type name ‘s32’ 98 | typedef s32 int32_t; | ^~~ /usr/include/linux/types.h:102:9: error: unknown type name ‘u8’ 102 | typedef u8 uint8_t; | ^~ /usr/include/linux/types.h:103:9: error: unknown type name ‘u16’ 103 | typedef u16 uint16_t; | ^~~ /usr/include/linux/types.h:104:9: error: unknown type name ‘u32’ 104 | typedef u32 uint32_t; | ^~~ /usr/include/linux/types.h:107:9: error: unknown type name ‘u64’ 107 | typedef u64 uint64_t; | ^~~ /usr/include/linux/types.h:108:9: error: unknown type name ‘u64’ 108 | typedef u64 u_int64_t; | ^~~ /usr/include/linux/types.h:109:9: error: unknown type name ‘s64’ 109 | typedef s64 int64_t; | ^~~ /usr/include/linux/types.h:125:9: error: unknown type name ‘u64’ 125 | typedef u64 sector_t; | ^~~ /usr/include/linux/types.h:126:9: error: unknown type name ‘u64’ 126 | typedef u64 blkcnt_t; | ^~~ /usr/include/linux/types.h:145:9: error: unknown type name ‘u32’ 145 | typedef u32 dma_addr_t; | ^~~ /usr/include/linux/types.h:155:9: error: unknown type name ‘u32’ 155 | typedef u32 phys_addr_t; | ^~~ In file included from /usr/include/linux/limits.h:7, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/x86_64-linux-gnu/bits/xopen_lim.h:99:6: error: missing binary operator before token "(" 99 | # if INT_MAX == 32767 | ^~~~~~~ /usr/include/x86_64-linux-gnu/bits/xopen_lim.h:102:7: error: missing binary operator before token "(" 102 | # if INT_MAX == 2147483647 | ^~~~~~~ /usr/include/x86_64-linux-gnu/bits/xopen_lim.h:126:6: error: missing binary operator before token "(" 126 | # if LONG_MAX == 2147483647 | ^~~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:42:18: error: conflicting types for ‘loff_t’; have ‘__loff_t’ {aka ‘long int’} 42 | typedef __loff_t loff_t; | ^~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:46:33: note: previous declaration of ‘loff_t’ with type ‘loff_t’ {aka ‘long long int’} 46 | typedef __kernel_loff_t loff_t; | ^~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:59:17: error: conflicting types for ‘dev_t’; have ‘__dev_t’ {aka ‘long unsigned int’} 59 | typedef __dev_t dev_t; | ^~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:16:33: note: previous declaration of ‘dev_t’ with type ‘dev_t’ {aka ‘int’} 16 | typedef __kernel_dev_t dev_t; | ^~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:74:19: error: conflicting types for ‘nlink_t’; have ‘__nlink_t’ {aka ‘long unsigned int’} 74 | typedef __nlink_t nlink_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:20:33: note: previous declaration of ‘nlink_t’ with type ‘nlink_t’ {aka ‘int’} 20 | typedef u32 nlink_t; | ^~~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:130, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/bits/types/timer_t.h:7:19: error: conflicting types for ‘timer_t’; have ‘__timer_t’ {aka ‘void *’} 7 | typedef __timer_t timer_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:26:33: note: previous declaration of ‘timer_t’ with type ‘timer_t’ {aka ‘int’} 26 | typedef __kernel_timer_t timer_t; | ^~~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:155, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/bits/stdint-intn.h:24:18: error: conflicting types for ‘int8_t’; have ‘__int8_t’ {aka ‘signed char’} 24 | typedef __int8_t int8_t; | ^~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:94:33: note: previous declaration of ‘int8_t’ with type ‘int8_t’ {aka ‘int’} 94 | typedef s8 int8_t; | ^~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:155, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/bits/stdint-intn.h:25:19: error: conflicting types for ‘int16_t’; have ‘__int16_t’ {aka ‘short int’} 25 | typedef __int16_t int16_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:96:33: note: previous declaration of ‘int16_t’ with type ‘int16_t’ {aka ‘int’} 96 | typedef s16 int16_t; | ^~~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:155, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/bits/stdint-intn.h:27:19: error: conflicting types for ‘int64_t’; have ‘__int64_t’ {aka ‘long int’} 27 | typedef __int64_t int64_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:109:33: note: previous declaration of ‘int64_t’ with type ‘int64_t’ {aka ‘int’} 109 | typedef s64 int64_t; | ^~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:158:19: error: conflicting types for ‘u_int8_t’; have ‘__uint8_t’ {aka ‘unsigned char’} 158 | typedef __uint8_t u_int8_t; | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:93:33: note: previous declaration of ‘u_int8_t’ with type ‘u_int8_t’ {aka ‘int’} 93 | typedef u8 u_int8_t; | ^~~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:159:20: error: conflicting types for ‘u_int16_t’; have ‘__uint16_t’ {aka ‘short unsigned int’} 159 | typedef __uint16_t u_int16_t; | ^~~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:95:33: note: previous declaration of ‘u_int16_t’ with type ‘u_int16_t’ {aka ‘int’} 95 | typedef u16 u_int16_t; | ^~~~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:160:20: error: conflicting types for ‘u_int32_t’; have ‘__uint32_t’ {aka ‘unsigned int’} 160 | typedef __uint32_t u_int32_t; | ^~~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:97:33: note: previous declaration of ‘u_int32_t’ with type ‘u_int32_t’ {aka ‘int’} 97 | typedef u32 u_int32_t; | ^~~~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:161:20: error: conflicting types for ‘u_int64_t’; have ‘__uint64_t’ {aka ‘long unsigned int’} 161 | typedef __uint64_t u_int64_t; | ^~~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:108:33: note: previous declaration of ‘u_int64_t’ with type ‘u_int64_t’ {aka ‘int’} 108 | typedef u64 u_int64_t; | ^~~~~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:179, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/select.h:70:5: error: conflicting types for ‘fd_set’; have ‘struct <anonymous>’ 70 | } fd_set; | ^~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:15:33: note: previous declaration of ‘fd_set’ with type ‘fd_set’ 15 | typedef __kernel_fd_set fd_set; | ^~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:192:20: error: conflicting types for ‘blkcnt_t’; have ‘__blkcnt_t’ {aka ‘long int’} 192 | typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */ | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:126:13: note: previous declaration of ‘blkcnt_t’ with type ‘blkcnt_t’ {aka ‘int’} 126 | typedef u64 blkcnt_t; | ^~~~~~~~ In file included from scripts/kconfig/expr.h:15, from scripts/kconfig/lkc.h:13, from scripts/kconfig/mconf.c:22: scripts/kconfig/list.h:24:8: error: redefinition of ‘struct list_head’ 24 | struct list_head { | ^~~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:178:8: note: originally defined here 178 | struct list_head { | ^~~~~~~~~ In file included from /usr/include/stdint.h:37, from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9, from /usr/include/curses.h:95, from scripts/kconfig/lxdialog/dialog.h:19, from scripts/kconfig/mconf.c:23: /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:24:19: error: conflicting types for ‘uint8_t’; have ‘__uint8_t’ {aka ‘unsigned char’} 24 | typedef __uint8_t uint8_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:102:33: note: previous declaration of ‘uint8_t’ with type ‘uint8_t’ {aka ‘int’} 102 | typedef u8 uint8_t; | ^~~~~~~ In file included from /usr/include/stdint.h:37, from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9, from /usr/include/curses.h:95, from scripts/kconfig/lxdialog/dialog.h:19, from scripts/kconfig/mconf.c:23: /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:25:20: error: conflicting types for ‘uint16_t’; have ‘__uint16_t’ {aka ‘short unsigned int’} 25 | typedef __uint16_t uint16_t; | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:103:33: note: previous declaration of ‘uint16_t’ with type ‘uint16_t’ {aka ‘int’} 103 | typedef u16 uint16_t; | ^~~~~~~~ In file included from /usr/include/stdint.h:37, from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9, from /usr/include/curses.h:95, from scripts/kconfig/lxdialog/dialog.h:19, from scripts/kconfig/mconf.c:23: /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:26:20: error: conflicting types for ‘uint32_t’; have ‘__uint32_t’ {aka ‘unsigned int’} 26 | typedef __uint32_t uint32_t; | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:104:33: note: previous declaration of ‘uint32_t’ with type ‘uint32_t’ {aka ‘int’} 104 | typedef u32 uint32_t; | ^~~~~~~~ In file included from /usr/include/stdint.h:37, from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9, from /usr/include/curses.h:95, from scripts/kconfig/lxdialog/dialog.h:19, from scripts/kconfig/mconf.c:23: /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:27:20: error: conflicting types for ‘uint64_t’; have ‘__uint64_t’ {aka ‘long unsigned int’} 27 | typedef __uint64_t uint64_t; | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:107:33: note: previous declaration of ‘uint64_t’ with type ‘uint64_t’ {aka ‘int’} 107 | typedef u64 uint64_t; | ^~~~~~~~ make[1]: *** [scripts/Makefile.host:112:scripts/kconfig/mconf.o] 错误 1 make: *** [Makefile:616:menuconfig] 错误 2
08-10
ziheng@ziheng-virtual-machine:/usr/src/linux-6.6.1$ sudo make menuconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/mconf.o In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:13:9: error: unknown type name ‘u32’ 13 | typedef u32 __kernel_dev_t; | ^~~ /usr/include/linux/types.h:20:9: error: unknown type name ‘u32’ 20 | typedef u32 nlink_t; | ^~~ /usr/include/linux/types.h:93:9: error: unknown type name ‘u8’ 93 | typedef u8 u_int8_t; | ^~ /usr/include/linux/types.h:94:9: error: unknown type name ‘s8’ 94 | typedef s8 int8_t; | ^~ /usr/include/linux/types.h:95:9: error: unknown type name ‘u16’ 95 | typedef u16 u_int16_t; | ^~~ /usr/include/linux/types.h:96:9: error: unknown type name ‘s16’ 96 | typedef s16 int16_t; | ^~~ /usr/include/linux/types.h:97:9: error: unknown type name ‘u32’ 97 | typedef u32 u_int32_t; | ^~~ /usr/include/linux/types.h:98:9: error: unknown type name ‘s32’ 98 | typedef s32 int32_t; | ^~~ /usr/include/linux/types.h:102:9: error: unknown type name ‘u8’ 102 | typedef u8 uint8_t; | ^~ /usr/include/linux/types.h:103:9: error: unknown type name ‘u16’ 103 | typedef u16 uint16_t; | ^~~ /usr/include/linux/types.h:104:9: error: unknown type name ‘u32’ 104 | typedef u32 uint32_t; | ^~~ /usr/include/linux/types.h:107:9: error: unknown type name ‘u64’ 107 | typedef u64 uint64_t; | ^~~ /usr/include/linux/types.h:108:9: error: unknown type name ‘u64’ 108 | typedef u64 u_int64_t; | ^~~ /usr/include/linux/types.h:109:9: error: unknown type name ‘s64’ 109 | typedef s64 int64_t; | ^~~ /usr/include/linux/types.h:125:9: error: unknown type name ‘u64’ 125 | typedef u64 sector_t; | ^~~ /usr/include/linux/types.h:126:9: error: unknown type name ‘u64’ 126 | typedef u64 blkcnt_t; | ^~~ /usr/include/linux/types.h:145:9: error: unknown type name ‘u32’ 145 | typedef u32 dma_addr_t; | ^~~ /usr/include/linux/types.h:155:9: error: unknown type name ‘u32’ 155 | typedef u32 phys_addr_t; | ^~~ In file included from /usr/include/linux/limits.h:7, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/x86_64-linux-gnu/bits/xopen_lim.h:99:6: error: missing binary operator before token "(" 99 | # if INT_MAX == 32767 | ^~~~~~~ /usr/include/x86_64-linux-gnu/bits/xopen_lim.h:102:7: error: missing binary operator before token "(" 102 | # if INT_MAX == 2147483647 | ^~~~~~~ /usr/include/x86_64-linux-gnu/bits/xopen_lim.h:126:6: error: missing binary operator before token "(" 126 | # if LONG_MAX == 2147483647 | ^~~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:42:18: error: conflicting types for ‘loff_t’; have ‘__loff_t’ {aka ‘long int’} 42 | typedef __loff_t loff_t; | ^~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:46:33: note: previous declaration of ‘loff_t’ with type ‘loff_t’ {aka ‘long long int’} 46 | typedef __kernel_loff_t loff_t; | ^~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:59:17: error: conflicting types for ‘dev_t’; have ‘__dev_t’ {aka ‘long unsigned int’} 59 | typedef __dev_t dev_t; | ^~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:16:33: note: previous declaration of ‘dev_t’ with type ‘dev_t’ {aka ‘int’} 16 | typedef __kernel_dev_t dev_t; | ^~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:74:19: error: conflicting types for ‘nlink_t’; have ‘__nlink_t’ {aka ‘long unsigned int’} 74 | typedef __nlink_t nlink_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:20:33: note: previous declaration of ‘nlink_t’ with type ‘nlink_t’ {aka ‘int’} 20 | typedef u32 nlink_t; | ^~~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:130, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/bits/types/timer_t.h:7:19: error: conflicting types for ‘timer_t’; have ‘__timer_t’ {aka ‘void *’} 7 | typedef __timer_t timer_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:26:33: note: previous declaration of ‘timer_t’ with type ‘timer_t’ {aka ‘int’} 26 | typedef __kernel_timer_t timer_t; | ^~~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:155, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/bits/stdint-intn.h:24:18: error: conflicting types for ‘int8_t’; have ‘__int8_t’ {aka ‘signed char’} 24 | typedef __int8_t int8_t; | ^~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:94:33: note: previous declaration of ‘int8_t’ with type ‘int8_t’ {aka ‘int’} 94 | typedef s8 int8_t; | ^~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:155, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/bits/stdint-intn.h:25:19: error: conflicting types for ‘int16_t’; have ‘__int16_t’ {aka ‘short int’} 25 | typedef __int16_t int16_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:96:33: note: previous declaration of ‘int16_t’ with type ‘int16_t’ {aka ‘int’} 96 | typedef s16 int16_t; | ^~~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:155, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/bits/stdint-intn.h:27:19: error: conflicting types for ‘int64_t’; have ‘__int64_t’ {aka ‘long int’} 27 | typedef __int64_t int64_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:109:33: note: previous declaration of ‘int64_t’ with type ‘int64_t’ {aka ‘int’} 109 | typedef s64 int64_t; | ^~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:158:19: error: conflicting types for ‘u_int8_t’; have ‘__uint8_t’ {aka ‘unsigned char’} 158 | typedef __uint8_t u_int8_t; | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:93:33: note: previous declaration of ‘u_int8_t’ with type ‘u_int8_t’ {aka ‘int’} 93 | typedef u8 u_int8_t; | ^~~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:159:20: error: conflicting types for ‘u_int16_t’; have ‘__uint16_t’ {aka ‘short unsigned int’} 159 | typedef __uint16_t u_int16_t; | ^~~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:95:33: note: previous declaration of ‘u_int16_t’ with type ‘u_int16_t’ {aka ‘int’} 95 | typedef u16 u_int16_t; | ^~~~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:160:20: error: conflicting types for ‘u_int32_t’; have ‘__uint32_t’ {aka ‘unsigned int’} 160 | typedef __uint32_t u_int32_t; | ^~~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:97:33: note: previous declaration of ‘u_int32_t’ with type ‘u_int32_t’ {aka ‘int’} 97 | typedef u32 u_int32_t; | ^~~~~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:161:20: error: conflicting types for ‘u_int64_t’; have ‘__uint64_t’ {aka ‘long unsigned int’} 161 | typedef __uint64_t u_int64_t; | ^~~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:108:33: note: previous declaration of ‘u_int64_t’ with type ‘u_int64_t’ {aka ‘int’} 108 | typedef u64 u_int64_t; | ^~~~~~~~~ In file included from /usr/include/x86_64-linux-gnu/sys/types.h:179, from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/select.h:70:5: error: conflicting types for ‘fd_set’; have ‘struct ’ 70 | } fd_set; | ^~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:15:33: note: previous declaration of ‘fd_set’ with type ‘fd_set’ 15 | typedef __kernel_fd_set fd_set; | ^~~~~~ In file included from /usr/include/stdlib.h:395, from scripts/kconfig/mconf.c:16: /usr/include/x86_64-linux-gnu/sys/types.h:192:20: error: conflicting types for ‘blkcnt_t’; have ‘__blkcnt_t’ {aka ‘long int’} 192 | typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */ | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:126:13: note: previous declaration of ‘blkcnt_t’ with type ‘blkcnt_t’ {aka ‘int’} 126 | typedef u64 blkcnt_t; | ^~~~~~~~ In file included from scripts/kconfig/expr.h:15, from scripts/kconfig/lkc.h:13, from scripts/kconfig/mconf.c:22: scripts/kconfig/list.h:24:8: error: redefinition of ‘struct list_head’ 24 | struct list_head { | ^~~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:178:8: note: originally defined here 178 | struct list_head { | ^~~~~~~~~ In file included from /usr/include/stdint.h:37, from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9, from /usr/include/curses.h:95, from scripts/kconfig/lxdialog/dialog.h:19, from scripts/kconfig/mconf.c:23: /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:24:19: error: conflicting types for ‘uint8_t’; have ‘__uint8_t’ {aka ‘unsigned char’} 24 | typedef __uint8_t uint8_t; | ^~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:102:33: note: previous declaration of ‘uint8_t’ with type ‘uint8_t’ {aka ‘int’} 102 | typedef u8 uint8_t; | ^~~~~~~ In file included from /usr/include/stdint.h:37, from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9, from /usr/include/curses.h:95, from scripts/kconfig/lxdialog/dialog.h:19, from scripts/kconfig/mconf.c:23: /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:25:20: error: conflicting types for ‘uint16_t’; have ‘__uint16_t’ {aka ‘short unsigned int’} 25 | typedef __uint16_t uint16_t; | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:103:33: note: previous declaration of ‘uint16_t’ with type ‘uint16_t’ {aka ‘int’} 103 | typedef u16 uint16_t; | ^~~~~~~~ In file included from /usr/include/stdint.h:37, from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9, from /usr/include/curses.h:95, from scripts/kconfig/lxdialog/dialog.h:19, from scripts/kconfig/mconf.c:23: /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:26:20: error: conflicting types for ‘uint32_t’; have ‘__uint32_t’ {aka ‘unsigned int’} 26 | typedef __uint32_t uint32_t; | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:104:33: note: previous declaration of ‘uint32_t’ with type ‘uint32_t’ {aka ‘int’} 104 | typedef u32 uint32_t; | ^~~~~~~~ In file included from /usr/include/stdint.h:37, from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9, from /usr/include/curses.h:95, from scripts/kconfig/lxdialog/dialog.h:19, from scripts/kconfig/mconf.c:23: /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h:27:20: error: conflicting types for ‘uint64_t’; have ‘__uint64_t’ {aka ‘long unsigned int’} 27 | typedef __uint64_t uint64_t; | ^~~~~~~~ In file included from /usr/include/linux/limits.h:6, from /usr/include/x86_64-linux-gnu/bits/local_lim.h:38, from /usr/include/x86_64-linux-gnu/bits/posix1_lim.h:161, from /usr/include/limits.h:195, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:203, from /usr/lib/gcc/x86_64-linux-gnu/11/include/syslimits.h:7, from /usr/lib/gcc/x86_64-linux-gnu/11/include/limits.h:34, from scripts/kconfig/mconf.c:14: /usr/include/linux/types.h:107:33: note: previous declaration of ‘uint64_t’ with type ‘uint64_t’ {aka ‘int’} 107 | typedef u64 uint64_t; | ^~~~~~~~ make[2]: *** [scripts/Makefile.host:131:scripts/kconfig/mconf.o] 错误 1 make[1]: *** [/usr/src/linux-6.6.1/Makefile:697:menuconfig] 错误 2 make: *** [Makefile:234:__sub-make] 错误 2
08-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值