M64Py openSUSE 13.1 64 bit Gnome - wrong ELFCLASS help

Hi all. I’m trying to use an emulator frontend for Mupen64Plus called M64Py. I downloaded this from the openSUSE Build Service. It’s pretty neat and I like it a lot (I use it on other distros), but I cannot seem to get it to run on my openSUSE 13.1 PC. It asked for a number of Python Qt4 libraries which I duly installed, but I’m now stumped on the following output:

kinzie@linux:~> m64py
 __  __                         __   _  _   ____  _            
|  \/  |_   _ _ __   ___ _ __  / /_ | || | |  _ \| |_   _ ___  
| |\/| | | | | '_ \ / _ \ '_ \| '_ \| || |_| |_) | | | | / __| 
| |  | | |_| | |_) |  __/ | | | (_) |__   _|  __/| | |_| \__ \ 
|_|  |_|\__,_| .__/ \___|_| |_|\___/   |_| |_|   |_|\__,_|___/ 

M64Py - A frontend for Mupen64Plus version 0.1.6

Traceback (most recent call last):
  File "/usr/bin/m64py", line 76, in <module>
  File "/usr/bin/m64py", line 60, in main
    from m64py.frontend.mainwindow import MainWindow
  File "/usr/lib/python2.7/site-packages/m64py/frontend/mainwindow.py", line 27, in <module>
    from m64py.frontend.worker import Worker
  File "/usr/lib/python2.7/site-packages/m64py/frontend/worker.py", line 30, in <module>
    from m64py.frontend.settings import Settings
  File "/usr/lib/python2.7/site-packages/m64py/frontend/settings.py", line 28, in <module>
    from m64py.frontend.input import Input
  File "/usr/lib/python2.7/site-packages/m64py/frontend/input.py", line 25, in <module>
    from m64py.frontend.joystick import Joystick
  File "/usr/lib/python2.7/site-packages/m64py/frontend/joystick.py", line 28, in <module>
    from m64py.SDL import *
  File "/usr/lib/python2.7/site-packages/m64py/SDL/__init__.py", line 30, in <module>
    from .dll import private_function, function
  File "/usr/lib/python2.7/site-packages/m64py/SDL/dll.py", line 226, in <module>
    _dll = SDL_DLL('SDL', 'SDL_Linked_Version')
  File "/usr/lib/python2.7/site-packages/m64py/SDL/dll.py", line 60, in __init__
    self._dll = getattr(cdll, library)
  File "/usr/lib64/python2.7/ctypes/__init__.py", line 435, in __getattr__
    dll = self._dlltype(name)
  File "/usr/lib64/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /usr/lib/libSDL-1.2.so.0.11.4: wrong ELF class: ELFCLASS32

Can anyone offer any help with this? Many thanks in advance. :slight_smile:

looks like you need some 32 bit libraries In other word you have a mix of 64 bit and 32 bit which does not work

Se if can find a 32 bit version of

Or maybe you need the 64bit???

Looks like the program is looking for 64bit libs in /usr/lib. Which is wrong since openSUSE uses /usr/lib64.
But, also: you say you run openSUSE 13.1, which does not come with this version of libSDL. It has libSDL-1_2-0-1.2.15-10.1.2
This makes me think you’ve already been experimenting, please show output of

zypper lr -d

And then I had some more looking around, and there is no package built for 13.1, so you must have used the package for an other openSUSE version. Please elaborate.

Hmmm not sure what you’re getting at. I did indeed do a little bit of experimenting, but only insofar as installing 32 bit version of the libsdl packages that are in the repos. I haven’t added anything untoward from any other sources, well, excepting M64Py itself.

I seem to have a version of libsdl-1.2.so.0.11.4 installed from the repos. :? This is a fresh install of 13.1.

Well, libsdl-1.2.so.0.11.4 is exactly the version that’s included in 13.1.

But installing only the 32bit version on a 64bit system will not work in that case, as m64py is a noarch python package and uses the 64bit python that’s installed (so it needs the 64bit version of the libraries).

So please install the 64bit version of libSDL. (as a side note: if you need the 32bit version of a library for some 32bit package, you should install the libxxx-32bit package, not the i586 version of libxxx)

Btw, there is a package for 13.1:
software.opensuse.org: Install package home:derselbst / m64py
Is it this that you installed?

Yes that is indeed the package I installed for M64Py. I do also have installed both the 64 and 32 bit versions of the aforementioned LibSDL package.

Is this program just not recognising which version to use? If so, how do I prompt it into the right direction? Thanks for your help.

Well, I just tried it and it works fine here. But it needed libSDL2.

Anyway, what SDL packages do you have installed exactly?

rpm -qa | grep SDL

And for verification, please also post the output of:

rpm -qi m64py

kinzie@linux:~> rpm -qa | grep SDL

kinzie@linux:~> rpm -qi m64py
Name : m64py
Version : 0.1.6
Release : 8.1
Architecture: noarch
Install Date: Sun 15 Dec 2013 12:08:22 GMT
Group : Games/Emulator
Size : 3532908
License : GPL-3.0
Signature : DSA/SHA1, Mon 14 Oct 2013 14:39:53 BST, Key ID fc7aef070ee744c4
Source RPM : m64py-0.1.6-8.1.src.rpm
Build Date : Mon 14 Oct 2013 14:39:40 BST
Build Host : build15
Relocations : (not relocatable)
Vendor : obs://build.opensuse.org/home:derselbst
URL : M64Py :: A frontend for Mupen64Plus
Summary : M64Py - A frontend for Mupen64Plus
Description :
M64Py is a Qt4 front-end (GUI) for Mupen64Plus 2.0, a cross-platform plugin-based Nintendo 64 emulator.
**Distribution: home:derselbst / openSUSE_13.1

**Thanks for your help. :slight_smile:

Well, I can reproduce your problem by installing libSDL-1_2-0-32bit, so try to uninstall that. Or do you need it for something else?

And apparently you should uninstall libSDL2-2_0-0-32bit as well as this also seems to confuse m64py.

That’s absolutely magic. Works perfectly now. Thanks so much!

I’d installed quite a few of those packages because I do very much enjoy the emulation scene on Linux, and I’d grabbed them because I thought Kega Fusion and Snes9x-Gtk needed them. As it happens, removing them didn’t affect those programs and now my beloved M64Py works. I had to manually tell it where the plugins directory was, but it’s working great now.

Again, thanks so much for your help, and Merry Christmas. :slight_smile:

What mupen64plus did you install? The only package available at least for 13.1 is Packman’s mupen64plus-ui-console. Because I searched here and there are no repos for 13.1 (but strangely there are repos for Debian!?)
But at least Packman’s seems to work out of the box (mupen64plus itself, without m64py), installing this one just keeps complaining and complaining about missing library versions that are not in any repo for openSUSE, for example libpng15, libminizip. (Yes, I was testing on a 32bit openSUSE 13.1).
But m64py is the same as yours.

That’s not strange. The site reflects the projects in the build service. And the build service can be used to build packages for other distros, even deb based, too.

Well I’m running the 64 bit version, but yes I installed mupen64plus-ui-console from Packman, and then installed M64Py as the front end for it. I did have to add an extra plugin from Packman too, but it’s all working jolly now. :slight_smile:

Kinzie, what extra plugin from Packman?

And does someone know by chance why the mentioned problem with mupen64plus from here?
And is there difference between Packman’s and Emulators’ mupen64plus? There’s still no 13.1 for Emulators…