2009-11-25 20 views
2

Je semble avoir quelques problèmes en essayant d'installer le module signatures de CPAN en utilisant Strawberry Perl 5.10.1 sur Windows XP.Comment installer le module signatures sur Strawberry Perl 5.10.1?

Je reçois des erreurs de "référence indéfinie" lors de la liaison. Je suppose qu'il ya quelque chose qui ne va pas avec mon module B::Hooks::Parser, mais en réinstallant celui-ci n'a pas résolu mon problème.

est ici la sortie:

 
cpan shell -- CPAN exploration and modules installation (v1.9452) Enter 
'h' for help. 

cpan> install signatures Database was generated on Wed, 25 Nov 2009 20:22:23 GMT 

Running install for module 'signatures' 
Running make for F/FL/FLORA/signatures-0.06.tar.gz 
Checksum for C:\strawberry\cpan\sources\authors\id\F\FL\FLORA\signatures-0.06.tar.gz ok Scanning cache C:\strawberry\cpan\build for sizes 
............................................................................DONE 

    CPAN.pm: Going to build F/FL/FLORA/signatures-0.06.tar.gz 

Cannot determine perl version info from lib/signatures.pm 
Checking if your kit is complete... 
Looks good 
Writing Makefile for signatures cp lib/signatures.pm blib\lib/signatures.pm 
C:\strawberry\perl\bin\perl.exe "-Iinc" C:\strawberry\perl\lib\ExtUtils\xsubpp 
-typemap C:\strawberry\perl\lib\ExtUtils \typemap signatures.xs > signatures.xsc && 
C:\strawberry\perl\bin\perl.exe "-Iinc" -MExtUtils::Command -e "mv" -- 
signatures.xsc signatures.c gcc -c 
-IC:\strawberry\perl\site\lib\B\Hooks\OP\Check\Install 
-IC:\strawberry\perl\site\lib\B\Hooks\Parser\Install 
-IC: \strawberry\perl\site\lib\B\Hooks\OP\PPAddr\Install 
-s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE -DPERL_IMPL ICIT_CONTEXT -DPERL_IMPLICIT_SYS 
-fno-strict-aliasing -DPERL_MSVCRT_READFIX -s -O2  -DVERSION=\"0.06\" -DXS_VER SION=\"0.06\" 
"-IC:\strawberry\perl\lib\CORE" signatures.c 
Running Mkbootstrap for signatures() 
C:\strawberry\perl\bin\perl.exe "-Iinc" -MExtUtils::Command -e "chmod" 
-- 644 signatures.bs C:\strawberry\perl\bin\perl.exe 
"-Iinc" -MExtUtils::Mksymlists \ 
    -e "Mksymlists('NAME'=>\"signatures\", 
'DLBASE' => 'signatures', 'DL_FUNCS' 
=> { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def signatures.def --output-exp dll.exp g++ -o 
blib\arch\auto\signatures\signatures.dll 
-Wl,--base-file -Wl,dll.base -mdll -s -L"C:\strawberry\perl\lib\CORE" -L "C:\strawberry\c\lib" signatures.o 
-Wl,--image-base,0x121d0000 C:\strawberry\perl\lib\CORE\libperl510.a 
C:\strawberry\perl\site\lib\auto\B\Hooks\OP\Check\Check.a 
C:\strawberry\perl\site\lib\auto\B\Hooks\Parser\Parser.a 
C:\strawberry\perl\site\lib\auto\B\Hooks\OP\PPAddr\PPAddr.a 
C:\strawberry\c\lib\libmoldname.a 
C:\strawberry\c\lib\libkernel32.a 
C:\strawberr y\c\lib\libuser32.a 
C:\strawberry\c\lib\libgdi32.a 
C:\strawberry\c\lib\libwinspool.a 
C:\strawberry\c\lib\libcomdlg32.a 
C:\strawberry\c\lib\libadvapi32.a 
C:\strawberry\c\lib\libshell32.a 
C:\strawberry\c\lib\libole32.a 
C:\strawberry\c\lib\lib oleaut32.a 
C:\strawberry\c\lib\libnetapi32.a 
C:\strawberry\c\lib\libuuid.a 
C:\strawberry\c\lib\libws2_32.a 
C:\strawberry \c\lib\libmpr.a 
C:\strawberry\c\lib\libwinmm.a 
C:\strawberry\c\lib\libversion.a 
C:\strawberry\c\lib\libodbc32.a 
C:\strawberry\c\lib\libodbccp32.a 
dll.exp 
signatures.o:signatures.c:(.text+0x23c):undefined reference to `hook_toke_skipspace' 
signatures.o:signatures.c:(.text+0x2b1):undefined reference to `hook_toke_skipspace' 
signatures.o:signatures.c:(.text+0x34b):undefined reference to `hook_toke_scan_word' 
signatures.o:signatures.c:(.text+0x4b9):undefined reference to `hook_toke_skipspace' 
signatures.o:signatures.c:(.text+0x4e2):undefined reference to `hook_toke_scan_str' 
signatures.o:signatures.c:(.text+0x4f5):undefined reference to `hook_parser_get_lex_stuff' 
signatures.o:signatures.c:(.text+0x508):undefined reference to `hook_parser_clear_lex_stuff' 
signatures.o:signatures.c:(.text+0x696):undefined reference to `hook_toke_skipspace' 
signatures.o:signatures.c:(.text+0x6cd):undefined reference to `hook_parser_get_linestr' 
signatures.o:signatures.c:(.text+0x8f2):undefined reference to `hook_toke_skipspace' 
signatures.o:signatures.c:(.text+0x966):undefined reference to `hook_toke_scan_word' 
signatures.o:signatures.c:(.text+0x9b3):undefined reference to `hook_toke_skipspace' 
signatures.o:signatures.c:(.text+0x9f7):undefined reference to `hook_toke_scan_str' 
signatures.o:signatures.c:(.text+0xa0a):undefined reference to `hook_parser_get_lex_stuff' 
signatures.o:signatures.c:(.text+0xa1d):undefined reference to `hook_parser_clear_lex_stuff' 
signatures.o:signatures.c:(.text+0xda4):undefined reference to `hook_parser_setup' 
signatures.o:signatures.c:(.text+0xf89):undefined reference to `hook_parser_teardown' collect2: ld 
returned 1 exit status dmake.EXE: 
Error code 129, while making 'blib\arch\auto\signatures\signatures.dll' 
FLORA/signatures-0.06.tar.gz 
C:\strawberry\c\bin\dmake.EXE -- NOT OK 
Running make test Can't test without successful make 
Running make install Make had returned bad status, install seems impossible 
Failed during this command: FLORA/signatures-0.06.tar.gz   
: make NO 

J'ai aussi fait un 'nm' sur ma bibliothèque Parser.a (en Perl/site/auto/B/crochets/parser) et je ne trouve aucune symboles contenant 'hook'

Est-ce que quelqu'un d'autre a rencontré ce problème? Ou est-ce que quelqu'un d'autre a réussi à installer le module de signatures?

+2

Vous devriez signaler ce problème ici: http://rt.cpan.org/Public/Dist/Display.html?Name=signatures. Les résultats de Cpantesters par OS par OS sont disponibles ici: http://matrix.cpantesters.org/?dist=signatures+0.06 –

+0

Vous avez raison, j'aurais dû le poster là. Je le ferai dès que possible! Je trouve cela marrant que perl 5.8 ne semble pas avoir ce problème (selon la matrice de test) alors que je ne trouve pas de truc spécifique à la version perl dans les deux modules. – ldx

Répondre

1

Je ne peux pas le réparer pour vous, mais vous n'êtes pas le seul à avoir ce problème. Il y a un failure report par l'un des héroïques CPAN testers. Mon coup de feu serait que si de tels symboles manquent sur win32, c'est parce que le module utilise des symboles non exportés qui sont exposés sur, par exemple, Linux parce que les choses sont un peu moins strictes là-bas. Cependant, je n'ai pas les sources à portée de main pour vérifier.

De toute façon, il semble que ce n'est pas quelque chose qui ne va pas sur votre système. C'est quelque chose qui a besoin d'être réparé dans la source. L'un d'eux.

+0

Vous avez raison: B :: Crochets :: Parser seulement les exportations symboles suivants: hook_op_check_id hook_parser_setup (void) de hook_parser_teardown void (id hook_op_check_id) const char * hook_parser_get_linestr (de pTHX) IV hook_parser_get_linestr_offset (pTHX) hook_parser_set_linestr (pTHX_ const char * new_value) Mais d'un autre côté, les fonctions sur lesquelles j'obtiens une référence indéfinie sont déclarées dans le fichier d'en-tête Parser.h, ce qui implique qu'elles peuvent être utilisées. Drôle ... Je ne sais pas vraiment si je devrais le faire en tant que bugreport pour le module signatures, ou le module B :: Hooks :: Parser. – ldx

+0

Considérant que leurs auteurs sont la même personne ... l'un ou l'autre! – tsee