[Pythonmac-SIG] C++ ABI 1002/102 incompatibility with wxPython on OS X

Christopher Barker Chris.Barker at noaa.gov
Tue Mar 1 22:58:50 CET 2011


On 3/1/11 1:34 PM, Brendan Simon (eTRIX) wrote:
> An app that works on PowerPC and Intel 10.4.11.
>
> $ cat ./MyApp.app/Contents/Frameworks/libwx_macud-2.8.0.dylib | strings
> | grep ABI
> 2.8 (debug,Unicode,compiler with C++ ABI 102,wx containers,compatible
> with 2.6)
> 2.8 (debug,Unicode,compiler with C++ ABI 1002,wx containers,compatible
> with 2.6)

This is presumably the PPC and Intel parts of the lib.

IIRC, at one point (about two years ago), Robin did some machinations to 
build the PPC version of the binary with a different compiler version 
than the Intel version. I needed to go through the same machinations to 
build an extension that was linked against wxPython.

I think that was required to get a build that would work on 10.3.9 PPC 
and recent Intel machines. Apparently, it's required for 10.4, too. I, 
unfortunately, don't have a 10.4 machine to test on anymore, so it' a 
bit hard for me to help. HOwever, looking at my ugly build script, it 
looks like I'm essentially doing:

1) build a regular old extension
2) using lipo to remove the PPc part
3) setting ENV varibles to use gcc3.3:
     # this builds the ppc version correctly
     export CXX="g++-3.3 -arch ppc -DMAC_OS_X_VERSION_MAX_ALLOWED=1040"
     export CC="gcc-3.3 -arch ppc -DMAC_OS_X_VERSION_MAX_ALLOWED=1040"
     export MACOSX_DEPLOYMENT_TARGET=10.3
4) pull the ppc part out of that build, and add it inot the original one.

when I look at the dylib delivered with that app, I get:

$ cat libwx_macud-2.8.0.dylib | strings | grep ABI
2.8 (debug,Unicode,compiler with C++ ABI 102,wx containers,compatible 
with 2.6)
2.8 (debug,Unicode,compiler with C++ ABI 1002,wx containers,compatible 
with 2.6)

when I look at the one in /usr/lib, which I presume was supplied by 
apple, I get:

2.8 (debug,Unicode,compiler with C++ ABI 1002,wx containers,compatible 
with 2.6)
2.8 (debug,Unicode,compiler with C++ ABI 1002,wx containers,compatible 
with 2.6)

(this is with OS-X 10.6).

When I look at the one in :

/usr/local/lib/wxPython-unicode-2.8.11.0/lib/
(which I got from a wxPython binary), I get:

$ cat libwx_macud-2.8.0.dylib | strings | grep ABI
2.8 (debug,Unicode,compiler with C++ ABI 102,wx containers,compatible 
with 2.6)
2.8 (debug,Unicode,compiler with C++ ABI 1002,wx containers,compatible 
with 2.6)

Which is what you want.

I suspect that you're now using Apple's wx, by accident, or are you 
using a newer wxPython than 2.8.11 ?


-Chris


-- 
Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker at noaa.gov


More information about the Pythonmac-SIG mailing list