I just tried to install Devel::Cover on my home box running WinXP and Strawberry Perl 5.8.8. It failed with:
C:\DOCUME~1\linjoh\LOCALS~1\Temp\cpan\build\Devel-Cover-0.63>g++ -o bl
+ib\arch\auto\Devel\Cover\Cover.dll -Wl,-
-base-file -Wl,dll.base -mdll -s -L"c:\strawberry-perl\perl\lib\CORE"
+-L"c:\strawberry-perl\mingw\lib" Cover.o
-Wl,--image-base,0x31410000 C:\strawberry-perl\perl\lib\CORE\libperl
+58.a -lmsvcrt -lmoldname -lkernel32 -lus
er32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -lolea
+ut32 -lnetapi32 -luuid -lws2_32 -lmpr -l
winmm -lversion -lodbc32 -lodbccp32 dll.exp
Cover.o:Cover.c:(.text+0x2002): undefined reference to `Perl_pp_nextst
+ate'
Cover.o:Cover.c:(.text+0x2050): undefined reference to `Perl_pp_nextst
+ate'
Cover.o:Cover.c:(.text+0x20c2): undefined reference to `Perl_pp_setsta
+te'
Cover.o:Cover.c:(.text+0x2110): undefined reference to `Perl_pp_setsta
+te'
Cover.o:Cover.c:(.text+0x2182): undefined reference to `Perl_pp_dbstat
+e'
Cover.o:Cover.c:(.text+0x21d0): undefined reference to `Perl_pp_dbstat
+e'
Cover.o:Cover.c:(.text+0x2237): undefined reference to `Perl_pp_enters
+ub'
Cover.o:Cover.c:(.text+0x2270): undefined reference to `Perl_pp_enters
+ub'
Cover.o:Cover.c:(.text+0x22d7): undefined reference to `Perl_pp_cond_e
+xpr'
Cover.o:Cover.c:(.text+0x2377): undefined reference to `Perl_pp_and'
Cover.o:Cover.c:(.text+0x2417): undefined reference to `Perl_pp_andass
+ign'
Cover.o:Cover.c:(.text+0x24b7): undefined reference to `Perl_pp_or'
Cover.o:Cover.c:(.text+0x2557): undefined reference to `Perl_pp_orassi
+gn'
Cover.o:Cover.c:(.text+0x25f7): undefined reference to `Perl_pp_xor'
Cover.o:Cover.c:(.text+0x2697): undefined reference to `Perl_pp_requir
+e'
Cover.o:Cover.c:(.text+0x2737): undefined reference to `Perl_pp_exec'
collect2: ld returned 1 exit status
This is the same error CPAN testers see. But looking at the
CPAN Testers Matrix says it seem to work on Cygwin, at least some of the time.
And, ack'ing through my cygwin perl directory shows that these symbols are present in:
Binary file 5.8\cygwin\CORE\libperl.a matches
Binary file 5.8\cygwin\CORE\libperl.dll.a matches
But ack'ing the Strawberry installation only matches header files (as with Cygwin). No match on .\lib\CORE\libperl58.a (or ./bin/perl58.dll?) where I suppose it would go if exported.
So, could this be because of the way Strawberry Perl is built? Is there some way to have it export those symbols similar to what Cygwin does?
Looking at the diff between my configuration and a working Cygwin Perl configuration, there are two ld flags that look promising (-Wl,--export-all-symbols and -Wl,--enable-auto-import).
I won't build a new Perl right now (getting a bit late), but maybe someone with a bit more clue can give me a hint on whether this sounds like the way to go?
Thanks,
/J
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.