Undefined symbol problem

Hello people.

My distro is Slackware, 13.37, with several updates by compiling newer
packages. At one point, gnuradio showed problems when running simple
programs. This is the error:

  File "<stdin>", line 1, in <module>
  File "/usr/local/lib64/python2.6/site-packages/gnuradio/wxgui/forms/
__init__.py",
    line 36, in <module> from forms import \
  File "/usr/local/lib64/python2.6/site-packages/gnuradio/wxgui/forms/
forms.py",
    line 45, in <module> import wx
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/
__init__.py",
    line 45, in <module> from wx._core import *
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/
_core.py",
    line 14774, in <module> from _misc import *
  File "/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/
_misc.py",
    line 4, in <module> import _misc_

  ImportError: /usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/
wx/_misc_.so:
    symbol _ZN7wxSound6CreateEiPKh, version WXU_2.8 not defined in
file
    libwx_gtk2u_adv-2.8.so.0 with link time reference

I recompiled wxpython, wxgtk, checked dependencies:

<ldd /usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/
_misc_.so | grep libwx_gtk2u_ad
  libwx_gtk2u_adv-2.8.so.0 => /usr/lib64/libwx_gtk2u_adv-2.8.so.0
(0x00007f33cdded000)

Checked if the symbol is in the libwx_gtk2u_adv-2.8.so.0 library:

readelf -W -s /usr/lib64/libwx_gtk2u_adv-2.8.so | grep
_ZN7wxSound6CreateEiPKh
   682: 00000000000b1440 133 FUNC GLOBAL DEFAULT 11
_ZN7wxSound6CreateEiPKh@@WXU_2.8.11
   854: 00000000000b1440 133 FUNC GLOBAL DEFAULT 11
_ZN7wxSound6CreateEiPKh

Is it the .11 in the 2.8.11 reference (or something else)?

TIA,
John

Hello people.

My distro is Slackware, 13.37, with several updates by compiling newer
packages. At one point, gnuradio showed problems when running simple
programs. This is the error:

     line 4, in<module> import _misc_
   ImportError: /usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/
wx/_misc_.so:
     symbol _ZN7wxSound6CreateEiPKh, version WXU_2.8 not defined in
file
     libwx_gtk2u_adv-2.8.so.0 with link time reference

This usually means that the wxPython binaries were built with a different version of wxGTK than what is currently installed.

I recompiled wxpython, wxgtk, checked dependencies:

Did you rebuild wxGTK first and then make sure that the wxPython build is using the wxGTK that you just built while it (wxPython) is compiling and linking?

<ldd /usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode/wx/
_misc_.so | grep libwx_gtk2u_ad
  libwx_gtk2u_adv-2.8.so.0 => /usr/lib64/libwx_gtk2u_adv-2.8.so.0
(0x00007f33cdded000)

Checked if the symbol is in the libwx_gtk2u_adv-2.8.so.0 library:

readelf -W -s /usr/lib64/libwx_gtk2u_adv-2.8.so | grep
_ZN7wxSound6CreateEiPKh
    682: 00000000000b1440 133 FUNC GLOBAL DEFAULT 11
_ZN7wxSound6CreateEiPKh@@WXU_2.8.11
    854: 00000000000b1440 133 FUNC GLOBAL DEFAULT 11
_ZN7wxSound6CreateEiPKh

Is it the .11 in the 2.8.11 reference (or something else)?

I've never had a real good understanding of the reasoning behind using the version tagged symbols, but basically that means that symbol was added in 2.8.11 (or at least is tagged that way in the build.) If you make sure that your wxPython build is using the same wxGTK libs at build time that it will find at runtime then it should solve the problem for you.

If you still have problems then you could try using a different prefix for the wxGTK build. That way it will be easier to ensure that wxPython is building with that one, and you can force it to be found first at runtime by setting LD_LIBRARY_PATH.

···

On 3/13/12 7:03 AM, JohnCc wrote:

--
Robin Dunn
Software Craftsman