Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^3: Can't compile XS code

by syphilis (Canon)
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.

Cheers,
Rob


Comment on Re^3: Can't compile XS code
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:
      e67728ddd89777815271ac7416cff32653d387bf
      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.)

      Cheers,
      Rob
        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.

      Cheers,
      Rob

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1001144]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (15)
As of 2015-07-29 12:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (263 votes), past polls