Получаете 6 ошибок при компиляции вывода модуля оболочки SWIG? - PullRequest
2 голосов
/ 27 июня 2011

gcc -fpic -c gd_wrap.c -Dbool=char -I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE:

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

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

Это хорошо известная ошибка (просто поищите в Google ключевые слова Perl_do_sysseek и swig.

Есть два решения, которые я нашел в прошлом.

Первый действительно грязный (и я его презираю), но работает на все 100%. Он заключается в добавлении вверху файла «proto.h» следующих строк:

#include <stdint.h>
typedef __off64_t off64_t;

Вторая система чище, чем первая. Вам следует обновить Swig до версии 2.0 и повторить попытку. Если это не работает, вы можете попробовать обновить Perl до версии 5.10.0.

0 голосов
/ 28 июня 2011

Это мой make-файл, который решает проблему для меня.

all: test

-isystem / usr / local / include

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.c -oh icinga-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-core-wrap-perl.o echo todo

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

...