2011-06-27 35 views
2

gcc -fpic -c gd_wrap.c -Dbool=char -I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE編譯SWIG的包裝器模塊輸出時出現6個錯誤?

In file included from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/op.h:499, 
       from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/perl.h:2754, 
       from gd_wrap.c:731: 
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/reentr.h:612: error: field ‘_crypt_struct’ has incomplete type 
In file included from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/perl.h:3950, 
       from gd_wrap.c:731: 
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/proto.h:297: error: expected declaration specifiers or ‘...’ before ‘off64_t’ 
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/proto.h:299: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Perl_do_sysseek’ 
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/proto.h:300: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Perl_do_tell’ 
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/proto.h:2009: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before Perl_PerlIO_tell’ 
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/proto.h:2010: error: expected declaration specifiers or ‘...’ before ‘off64_t’ 

任何人都熟悉這個錯誤?

我在CentOS 5.5和Perl版本是5.8.8

回答

3

這是一個衆所周知的缺陷(只需在谷歌搜索關鍵字Perl_do_sysseek和痛飲。

有兩個解決方案我已經在過去發現。

第一種是真髒(我鄙視它),但100%的工作由它在的「proto.h」頂部添加文件這些行:

#include <stdint.h> 
typedef __off64_t off64_t; 

第二個系統比第一個更清潔。您應該將swig升級到2.0版並重試。如果它不起作用,您可以嘗試將perl升級到版本5.10.0。

+0

怎麼樣'/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/reentr.h :612:錯誤:字段'_crypt_struct'具有不完整的類型? –

+0

啊,爲此,只需定義「_GNU_SOURCE」放在編譯行「-D_GNU_SOURCE」 –

+0

只是好奇,你怎麼能記住這一切? –

0

這是我的生成文件,爲我解決了這個問題。

所有:測試

-isystem的/ usr /本地/包括

CFLAGS = -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno嚴格走樣-pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS = 64

icinga -core-wrap-perl.c:icinga-core.i swig -perl -outcurrentdir -o icinga-core-wrap-perl.c -oh icing-core-wrap-perl.h icinga-core.i

icinga-core-wrap-perl.o:icinga-core-wrap-perl.c gcc $(CFLAGS)-I ../ include icinga-core-wrap-perl.c -I/usr/lib/perl/5.10.1/CORE/-o icinga-core-wrap-perl.o

測試:icinga核心 - 總結perl.o 回聲待辦事項

https://gitorious.org/icinga/icinga-core/commit/5c19af4baf01b6741bdef782a33339da0e403de6