in reply to Does XCode 4 break Perl?

I am not a Mac user, so this answer is based on google and other second hand sources.

According to the Apple page listing what is new in Xcode4, they say that there is a new compiler, and that LLVM is now the default instead of GCC.

Your version of perl is most likely compiled with GCC, as that has been the standard compiler on Macs up until now. If you compile and XS module using the new LLVM compiler, then it is unlikely to link correctly with perl that was compiled on a different compiler.

There is a similar situation on windows, as if you use Active state perl (compiled with Microsoft cc), then you need to use an MS build environment to build XS modules, you cannot use GCC under cygwin without also using perl under cygwin.

I think your solution is to work out how to change the default compiler under Xcode back to GCC. Alternatively, you could recompile perl and all the modules you have installed using the new compiler.

Replies are listed 'Best First'.
Re^2: Does XCode 4 break Perl?
by Anonymous Monk on Apr 01, 2011 at 08:37 UTC
    Your version of perl is most likely compiled with GCC, as that has been the standard compiler on Macs up until now. If you compile and XS module using the new LLVM compiler, then it is unlikely to link correctly with perl that was compiled on a different compiler.
    You're right about there being a new compiler: gccversion='4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.9). But I did mention that I also tried rebuilding perl. Since it was in a fresh tree, the modules had to be recompiled as well.

    The error I'm seeing looks like an ordinary syntax error, that's what's so baffling. After adding 'use Fcntl; use POSIX qw(ENOSYS EXDEV);' at the beginning of IO/AIO.pm, I got an error about a symbol that was only defined by IO::AIO: READDIR_DIRS_FIRST, so it looks the export mechanism might have gotten screwed up. I'm out of my depth here. And this is the only module I've seen having this problem so far, so it's mysterious to me.

    And I'm not sure if this is going to be solved in a timely fashion since the module author is anti-bugtracker.

      The error I'm seeing looks like an ordinary syntax error, that's what's so baffling

      Please copy/paste the error message

        It's in my original message.