Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^3: Can't compile XS code

by syphilis (Archbishop)
on Oct 26, 2012 at 23:37 UTC ( [id://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

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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1001144]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2024-03-29 11:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found