It turns out that previous builds of my application DO work on
PowerPC OS X 10.4, it’s only recent builds
that fail with the ABI compatibility error.
The app bundle is built with python.org 2.5.4 using pythonw
(/Library/Frameworks/Python.framework/Versions/2.5/bin/pythonw). It
contains a libwx_macud-2.8.0.dylib file which I think is the
culprit. I interrogated this file (strings and grep) and noted an
ABI difference.
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)
` An app that does NOT work on PowerPC 10.4.11 but does work on
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 1002,wx
containers,compatible with 2.6)
2.8 (debug,Unicode,compiler with C++ ABI 1002,wx
containers,compatible with 2.6)
`
The latter has TWO identical lines with ABI 1002. i.e. it does NOT
have the ABI 102 for some reason.
A search of my filesystem reveals that none of the wx libraries
appear to have ABI 102 in the wx libraries.
`$ find /usr -name "libwx_macud-2.8.0.dylib" -ls
141212 8 lrwxr-xr-x 1 root wheel 27 15 Aug
2009 /usr/lib/libwx_macud-2.8.0.dylib →
libwx_macud-2.8.0.5.0.dylib
227169828 8 lrwxr-xr-x 1 root wheel 27 5
Aug 2010
/usr/local/lib/wxPython-unicode-2.8.11.0/lib/libwx_macud-2.8.0.dylib
→ libwx_macud-2.8.0.7.0.dylib
2411353 8 lrwxr-xr-x 1 root wheel 27 18
Jun 2008
/usr/local/lib/wxPython-unicode-2.8.4.0/lib/libwx_macud-2.8.0.dylib
→ libwx_macud-2.8.0.1.1.dylib
2412261 8 lrwxr-xr-x 1 root wheel 27 18
Jun 2008
/usr/local/lib/wxPython-unicode-2.8.4.2/lib/libwx_macud-2.8.0.dylib
→ libwx_macud-2.8.0.1.1.dylib`
` $ find /usr -name "libwx_macud-2.8.0.dylib" | xargs strings |
grep ABI
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)
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)
`
I'm not sure what has changed to cause this.
-
OS X updates
-
Code changes that use various interpreters, specified as:
python, pythonw,
/Library/Frameworks/Python.framework/Versions/2.5/bin/pythonw,
etc. -
Installs of new pythons (e.g. python 2.7, python 3.x)
-
Installs of newer wxPython ?? ANSI versus Unicode versions ??
Any ideas as to why my wx library no longer has the ABI 102
compatibility ??I’m thinking it is most likely a wxPython build or install problem.
Thanks, Brendan.
···
On 8/02/11 10:55 PM, Brendan Simon (eTRIX) 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 detected. 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 logout
As others have informed me, the C++ ABI changed from gcc-3.3 to gcc-3.4 (and beyond).