Subject: | Build fails on Strawberry perl 5.10.1 / Windows XP |
Hi,
I can't seem to install the signatures module on my Windows XP machine
running strawberry perl 5.10.1.
I get "undefined reference" errors during linking.
It seems that either:
- the B::Hooks::Parser module isn't exporting enough symbols
or
- the signatures module is using symbols from B::Hooks::Parser
which it shouldn't be using.
I'm not sure which module should be changed here, but since
the problem actually occurs when I try to install signatures,
I decided to post it here.
Here is the buildlog:
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" -- signa
tures.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\p
erl\site\lib\auto\B\Hooks\OP\Check\Check.a
C:\strawberry\perl\site\lib\auto\B\Hooks\Parser\Parser.a
C:\strawberry\perl\s
ite\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:\straw
berry\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
I've checked the symbols exported in
C:\strawberry\perl\site\lib\auto\B\Hooks\Parser\Parser.a and I've also
checked the functions declared in Parser.h
The symbols to which I get an "undefined reference" are declared in the
Parser.h file (thus implying that they can be used ?)
but are not exported in the Parser.a library.
So maybe it is the B::Hooks::Parser module that should be altered.
I don't know. I'll leave it up to you.
Regards,
Lorenzo