[Pythonmac-SIG] C++ ABI 1002/102 incompatibility with wxPython
Brendan Simon (eTRIX)
brendan.simon at etrix.com.au
Sun Feb 6 10:47:37 CET 2011
On 26/01/11 4:06 AM, Christopher Barker wrote:
> On 1/25/11 1:20 AM, Brendan Simon (eTRIX) wrote:
>> I have a wxPython app that is built with py2app. A user recently
>> reported the following error when trying to run the app.
>> Fatal Error: Mismatch between the program and library build versions
>> The library used 2.8 (no debug,Unicode,compiler with C++ ABI 1002,wx
>> containers,compatible with 2.6),
>> and your program used 2.8 (no debug,Unicode,compiler with C++ ABI
>> 102,wx containers,compatible with 2.6).
>> Abort trap
As others have informed me, the C++ ABI changed from gcc-3.3 to gcc-3.4
> Meanwhile a couple questions/thoughts:
> > It appears to be a difference in the wx libraries on the target system
>> and the wx libraries on the build system.
>> Unfortunately, at this stage, I do not know what the OS X version is on
>> the target system.
>> The app was built using Python 2.5.4, (wxPython 184.108.40.206 or 220.127.116.11 ??)
>> on OS X 10.6.6.
> Is that the "apple's" python? i.e. the one in:
> If so, that is likely your problem. py2app does not bundle up everything
> if you're using Apple's python, so your python install and your users
> may be different.
It's not Apple's python. It is 2.5.4 from Python.org.
>> Is there anyway to fix this with a py2app setting ??
> not until we figure out what's wrong...
>> Doesn't py2app copy all the libraries to the app bundle ??
> it should, but it won't if you are using Apple's python, and sometimes
> things go wrong. wxPython puts itself in /usr/local/, while putting
> nifty sys.path manipulations in the python installs, so things can get a
> bit confused. But it's done so that one installer can support both
> python,org and apple pythons.
>> I guess that
>> doesn't guarantee that the libraries will load on any OS.
> no, it doesn't, but it should load on any version that your supporting
> libs are built for -- the standard wxPython installers are built for
> 10.4 and above (maybe 10.3.9 --not sure about that), and so is the
> python,org python -- are you using any other third-party libs that
> aren't pure python?
I have more info now. The app is being run on a PPC Mac with 10.4.11
(Tiger). Tiger should be fine in terms of ABI compatibility for
wxPython and Python.
I now have a 10.4.11 PowerPC Mac and can replicate the problem, though
it was a 10.2 (Jaguar) system that I upgraded to 10.4 (Tiger). i.e.
it's not a fresh install of Tiger.
$ file /Applications/MyApp.app/Contents/MyApp
MyApp: Mach-O fat file with 2 architectures
MyApp (for architecture ppc): Mach-O executable ppc
MyApp (for architecture i386): Mach-O executable i386
Fatal Error: Mismatch between the program and library build versions
The library used 2.8 (debug,Unicode,compiler with C++ ABI 1002,wx
containers,compatible with 2.6)
and wxPython used 2.8 (debug,Unicode,compiler with C++ ABI 102,wx
containers,compatible with 2.6)
Could not find platform independent libraries <exec_prefix>
Consider setting $PYTHONPATH to <prefix>[:<exec_prefix>]
'import site' failed; use -v for traceback
Python 2.5.4 (r254:67917, Dec 23 2008, 14:57:27)
[GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin
>>> import sys
>>> for l in sys.path: print l
$ ls -l /Library/Frameworks/
No output from above command, but it shouldn't matter right, as all
libraries should be in the app bundle, right ??
More information about the Pythonmac-SIG