编译内核时遇到的问题 SEGMENT_SIZE undeclared

编译内核时遇到的问题 SEGMENT_SIZE undeclared

27 二

因为编译内核时开了多个线程,因此编译碰到错误停止时,错误信息可能在上面几十行信息里。

第一个可能碰到的错误是: SEGMENT_SIZE’ undeclared

fs/binfmt_aout.c: In function 'load_aout_binary':
fs/binfmt_aout.c:271: error: 'SEGMENT_SIZE' undeclared (first use in this function)
fs/binfmt_aout.c:271: error: (Each undeclared identifier is reported only once
fs/binfmt_aout.c:271: error: for each function it appears in.)
make[1]: *** [fs/binfmt_aout.o] 错误 1

解决方法, 打开Makefile,找到下面这一行

NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)

改成

NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) -Dlinux

接着执行编译命令 and(and这个命令在上一节中讲过,为自定义的命令)

出现这个错误是因为在fs/binfmt_aout.c中,引用的宏SEGMENT_SIZE在include/linux/a.out.h中定义。
它的值取决于宏定义linux, 如果定义过linux才会有SEGMENT_SIZE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
132 #ifdef linux
133 #ifdef __KERNEL__
134 #include
135 #else
136 #include
137 #endif
138 #if defined(__i386__) || defined(__mc68000__)
139 #define SEGMENT_SIZE 1024
140 #else
141 #ifndef SEGMENT_SIZE
142 #ifdef __KERNEL__
143 #define SEGMENT_SIZE PAGE_SIZE
144 #else
145 #define SEGMENT_SIZE getpagesize()
146 #endif
147 #endif
148 #endif
149 #endif

解决方法出处:http://forum.xda-developers.com/archive/index.php/t-825611.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值