У меня перестал собираться перл, не может вычислить некоторые константы для ioctl в сгенерированном сишном коде. $ cat /tmp/.private/at/bhap6ejYVA.c #include #include int main() { printf("TCGETS %ld\n", (long)(TCGETS)); printf("TCGETS2 %ld\n", (long)(TCGETS2)); return 0; } $ gcc /tmp/.private/at/bhap6ejYVA.c /tmp/.private/at/bhap6ejYVA.c: In function 'main': /tmp/.private/at/bhap6ejYVA.c:5: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/bhap6ejYVA.c:5: error: array type has incomplete element type /tmp/.private/at/bhap6ejYVA.c:5: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/bhap6ejYVA.c:5: error: invalid application of 'sizeof' to incomplete type 'struct termios2' $ Воспроизводится это так: $ pwd /home/at/git.alt/perl/ext/ph $ diff -u h2ph.pl{-,} --- h2ph.pl- 2008-03-18 21:06:25 +0300 +++ h2ph.pl 2008-03-19 01:55:18 +0300 @@ -24,7 +24,7 @@ sub get_values ($$) { my @include = @{ +shift }; my @names = @{ +shift }; - my $src = File::Temp->new(SUFFIX=>'.c'); + my $src = File::Temp->new(SUFFIX=>'.c',UNLINK=>0); print $src "#include \n"; for (@include) { print $src "#include <$_>\n"; $ perl ioctl_ph.PL /tmp/.private/at/S5LyD2gyrT.c: In function 'main': /tmp/.private/at/S5LyD2gyrT.c:67: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:67: error: array type has incomplete element type /tmp/.private/at/S5LyD2gyrT.c:67: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:67: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:74: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:74: error: array type has incomplete element type /tmp/.private/at/S5LyD2gyrT.c:74: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:74: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:76: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:76: error: array type has incomplete element type /tmp/.private/at/S5LyD2gyrT.c:76: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:76: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:78: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:78: error: array type has incomplete element type /tmp/.private/at/S5LyD2gyrT.c:78: error: invalid application of 'sizeof' to incomplete type 'struct termios2' /tmp/.private/at/S5LyD2gyrT.c:78: error: invalid application of 'sizeof' to incomplete type 'struct termios2' failed: gcc -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -I/usr/local/include -I/usr/include/gdbm -o /tmp/.private/at/2jww_OC3PH /tmp/.private/at/S5LyD2gyrT.c -Wl,-O1 -L/usr/local/lib -ldl -lm -lpthread -lc -lcrypt at ./h2ph.pl line 39. $ sed -n -e 67p -e 74p -e 76p -e 78p /tmp/.private/at/S5LyD2gyrT.c printf("TCGETS2 %ld\n", (long)(TCGETS2)); printf("TCSETS2 %ld\n", (long)(TCSETS2)); printf("TCSETSF2 %ld\n", (long)(TCSETSF2)); printf("TCSETSW2 %ld\n", (long)(TCSETSW2)); $