From: Eric W. <scr...@gm...> - 2006-12-09 20:18:26
|
# from Eric Wilhelm # on Tuesday 05 December 2006 01:16 am: > dyld: .../wxdo.app/Contents/MacOS/wxdo Undefined symbols: > > .../wxdo.app/Contents/Resources/Perl-Libraries/auto/Wx/Html/Html.bundle > undefined reference to __Z27wxPli_add_constant_functionPPFdPKciE > expected to be defined in a dynamic image # from Mark Dootson # on Tuesday 05 December 2006 02:06 pm: >On reflection, there's so much wrong with my suggestion below that its >difficult to know where to start. Well, you did at least get me thinking about the right bits of code. I did some more digging and ended up deep inside of XSLoader and DynaLoader. It appears that _boot_Constant( 'Wx', $XS_VERSION ); ...doesn't actually do anything. But, I still can't quite figure out what's going on. I also tried building wxPerl as ppc-only using the 10.3 SDK in -isysroot flag (per [1]) (note: I had to use `ditto` to extract a /usr/bin/perl-ppc from apple's universal perl.) But, this gives me the same "expected to be defined" errors when loading any of the Wx extensions on 10.3. My best guess is that it is because the .dylib symbol tables are slightly different from one OS version to the other. If that's the case, it may be that apple's perl is not 10.3 compatible (and therefore my libperl and Dynaloader.bundle are the source of the problem?) But, how to ask a binary what SDK it was built against? I guess I should also ask the question: does Wx work when compiled on a 10.3 mac? Given apple's policy of discontinuing all old software (including a 10.3-compatible xcode) on day zero of a new version, I'm going to have a tough time discovering that for myself without shelling out some bucks for a trip to their lab in california. So, what to do? Is it worth compiling perl-and-everything-else from source as ppc with the 10.3 SDK? It's sounding like I'll have to do that to get something that's compatible with old macs (and then (assuming the ppc cross-compiled build works!) stitch everything together with an i386 build to get a universal binary.) Alternatively, I just give up and don't do a binary build for 10.3. How many users does that exclude? --Eric [1] http://developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/Using/chapter_3_section_2.html -- So malloc calls a timeout and starts rummaging around the free chain, sorting things out, and merging adjacent small free blocks into larger blocks. This takes 3 1/2 days. --Joel Spolsky --------------------------------------------------- http://scratchcomputing.com --------------------------------------------------- |