Problen with flex?

Michael A. Peters mpeters at
Mon Apr 28 12:45:22 PDT 2003

I don't know anything about flex (I guess this means I get to learn...

But at anyrate - when compiling ttmkfdir 3.0.9 on LFS the build would
fail with the following error:

parser.cpp: At global scope:
parser.cpp:1531: declaration of `int isatty(int)' throws different
/usr/include/unistd.h:686: than previous declaration `int isatty(int)
throw ()'
parser.cpp:1310: warning: `void yyunput(int, char*)' defined but not
make: *** [parser.o] Error 1

parser.cpp is generated my the Makefile with flex.
The problem is that it generates the following line:

extern int isatty YY_PROTO(( int ));

which conflicts with unistd.h line 686 (glibc 2.3.2):

extern int isatty (int __fd) __THROW;

Interestingly enough - this problem doesn't occur on RH8 with the same
version of flex installed. I'm not sure why they produce different
parser.cpp files - but they do. Does anyone know more about why?

I can build ttmkfdir 3.0.9 on LFS if I use the parser.cpp file generated
in RH8 and comment out the creation of that file in the Makefile - 

parser.cpp: encoding.l
            flex -i -8 -o$@ $<

but I would like to figure out or know what the _real_ issue is (could
it be a bug in the encoding.l file and not with flex?) and if it is with
something on my lfs system, what needs to be patched ...

Any ideas?

Michael A. Peters <mpeters at>

Unsubscribe: send email to listar at
and put 'unsubscribe lfs-dev' in the subject header of the message

More information about the lfs-dev mailing list