Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re^3: Can't compile XS code

by syphilis (Chancellor)
on Oct 26, 2012 at 23:37 UTC ( #1001144=note: print w/replies, xml ) Need Help??

in reply to Re^2: Can't compile XS code
in thread Can't compile XS code

objdump: dknisxxxxx.o: File format not recognized

Then that's your problem ... or at least *one* problem that needs to be fixed.

Could that libperl516.a that's being found be a 32-bit version of libperl516.a ? The error messages from objdump would fit such a scenario.
Compare it to the libperl516.a that's on the other machine you mentioned. They should be identical (obviously), right down to the Digest::MD5 signatures, if they're the same builds of Strawberry Perl.

Afterthought: If that libperl516.a is 64-bit, then another possibility is that you've just run a 32-bit version of objdump on it. That would also fit the objdump errors you reported.


Replies are listed 'Best First'.
Re^4: Can't compile XS code
by nglenn (Beadle) on Oct 27, 2012 at 01:39 UTC
    I just removed and reinstalled the whole distribution. I still get the exact same errors.
      Are you using the "MSI Installer" version of that distro ? According to this page, it's SHA1 digest should be:
      Is that what you have ? (I get that SHA1 digest for the distro that I just downloaded - so that part looks fine to me.)
      If you get a different SHA1 digest for the distro you downloaded then, either you've grabbed a different distro, or you've got a corrupted distro.

      When I install that distro and run:
      objdump -t C:/strawberry/perl/lib/CORE/libperl516.a >dump.txt
      I get no errors ... so I'm thinking that you must be running a different objdump. Where is it coming from ? You need to run the objdump that's in C:/strawberry/c/bin ... so try:
      C:/strawberry/c/bin/objdump -t C:/strawberry/perl/lib/CORE/libperl516. +a >dump.txt
      Does that make any difference for you ?
      Finally, the various digests I get for libperl516.a are:
      Enter the filename (full path): C:/strawberry/perl/lib/CORE/libperl516 +.a MD5: e53826b93afd80de2e44038da93e63ba SHA1: 68737f9536907c5a37833b94e26685a10d9c5ce0 SHA256: c66d4ad43a583304b800e22966de0ab5baa6000ccb956643559b8e76f62e84 +dc
      Does that match what you get ? (No need to check all 3 - any one will do.)

        SHA1 was correct. When I checked where objdump was, however, I found it in two places: my separate MSYS installation, and the strawberry one. Once I removed all of the MINGW stuff from the path, strawberry no longer had any trouble compiling XS stuff. Maybe I had a wrong version of MINGW or something; either way, I'm happy it works now. Thanks!
Re^4: Can't compile XS code
by Anonymous Monk on Oct 27, 2012 at 02:13 UTC

    On a 64-bit os these seem odd -lkernel32 -luser32 -lgdi32 -lshell32 -lole32 -loleaut32 -lnetapi32

    Maybe the compiler chain knows to ignore that and link shell64 etc, maybe it doesn't

      That's ok. Although it's a 64-bit OS, the library names still retain their '32' suffix.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1001144]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (10)
As of 2018-06-18 13:44 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (109 votes). Check out past polls.