linux内核make all出现scripts/unifdef.c:209: error: conflicting types for 'getline'

3337阅读 0评论2012-05-11 yaoqigui
分类:LINUX

From: Kyle McMartin

Rawhide builds are currently failing to build unifdef.c, as the next
version of glibc changes the default _POSIX_C_SOURCE level, which
exposes getline() from

scripts/unifdef.c:209: error: conflicting types for 'getline'
/usr/include/stdio.h:653: note: previous declaration of 'getline' was
here
make[2]: *** [scripts/unifdef] Error 1
make[1]: *** [__headers] Error 2
make: *** [vmlinux] Error 2

Rename the symbol in unifdef.c to parseline to avoid this conflicting
declaration.

Otherwise Jakub says we could add a -D_POSIX_C_SOURCE=200112L as a
workaround to unifdef CFLAGS, but this seems like it would be less
desirable in the long term.

Signed-off-by: Kyle McMartin

---
diff --git a/scripts/unifdef.c b/scripts/unifdef.c
index 552025e..977e682 100644
--- a/scripts/unifdef.c
+++ b/scripts/unifdef.c
@@ -206,7 +206,7 @@ static void             done(void);
static void             error(const char *);
static int              findsym(const char *);
static void             flushline(bool);
-static Linetype         getline(void);
+static Linetype         parseline(void);
static Linetype         ifeval(const char **);
static void             ignoreoff(void);
static void             ignoreon(void);
@@ -512,7 +512,7 @@ process(void)

for (;;) {
linenum++;
- lineval = getline();
+ lineval = parseline();
trans_table[ifstate[depth]][lineval]();
debug("process %s -> %s depth %d",
    linetype_name[lineval],
@@ -526,7 +526,7 @@ process(void)
  * help from skipcomment().
  */
static Linetype
-getline(void)
+parseline(void)
{
const char *cp;
int cursym;
 
说白了就是将scripts/unifdef.c中的getline函数重命名。这里命名为:parseline
上一篇:在VMware下安装 Fedora 12 Guest operating system 'fed问题
下一篇:make install 发送的一个错误:sbin/new-kernel-pkg:line 277