83

Trying to run Game Dev Tycoon on Ubuntu 64. It asks for the above object.

I ran sudo apt-get install libudev1:i386 and it came back already installed.

I have /lib/i386-linux-gnu/libudev.so.1 but no libudev.so.0 anywhere.

1
  • 1
    This happened when trying to install the new version of Popcorntime on Mint Petra 16 Dec 18, 2015 at 21:01

15 Answers 15

199

To fix, I linked libudev.so.1 to libudev.so.0:

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0
9
  • 25
    for 64 bit: sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
    – Stefano
    Aug 17, 2013 at 20:51
  • 12
    Please do not do this. It is only asking for problems.
    – dobey
    Dec 11, 2013 at 20:41
  • 1
    This messed up Plex Home Theatre for me, to revert remove libudev.so.0 symlink and reinstall libudev0:i386 Mar 11, 2014 at 15:36
  • 2
    On 32 bit this is the command (in case someone reached here): sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0 Oct 1, 2014 at 22:49
  • 6
    Listen to dobey, this is a messy procedure. Ryan Crichton posted the right way to do it HERE.
    – berbt
    Apr 7, 2015 at 20:00
58

For ubuntu 14.04 and above

The easiest method I found was to just download the .deb (direct link to 64-bit download and to 32-bit download) and double click it to install it or use dpkg to install it:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

For previous versions

In previous version of ubuntu this package was available in the official repositories. You can install with the following:

sudo apt-get install libudev0:i386
8
  • 18
    THIS IS THE RIGHT ANSWER. If a package is missing, you install the package... is that simple. Creating links, hex-editing names, reconfiguring Google Chrome, hammering the CPU and snorting chilli powder are not real solutions.
    – berbt
    Apr 7, 2015 at 19:53
  • 2
    But it only works if that package is available. Sep 22, 2015 at 2:39
  • 1
    @TamsynMichael the package doesn't have to be available in the repositories, you can download it from the link above and then install it manually on ubuntu versions that don't have the package available in their official repositories. Sep 23, 2015 at 18:57
  • This should be the right answer ! this is the proper fix ,no messy symlinks or whatsoever Nov 1, 2015 at 11:09
  • This is the easiest method that I can find. Adding older dependency to repository is a pain
    – denny
    Dec 14, 2015 at 23:16
32

I had the same problem for a different program, but Sean's accepted answer didn't help me at all. On my upgraded install of 64-bit 13.04, libudev0 is not available either in 64-bit form or i386 form. And ia32-libs is already installed. So no dice.

What I had to do was a slightly modified version senshikaze's more technical solution. I manually symlinked libudev.so.0 to libudev.so.1 in the x86_64 lib directory, thusly:

cd /lib/x86_64-linux-gnu/
sudo ln -sf libudev.so.1 libudev.so.0

This fixed it for me.

2
27

For 64-bit Ubuntu, it is in the 32-bit libudev0 package.

You can install that with the following command:

sudo apt-get install libudev0:i386

This package was removed from Ubuntu in 14.04. You will need to install it from an older version.

6
  • 3
    no package found when trying to looking for libudev0:i386 any ideas ?
    – Jonathan
    Jun 3, 2014 at 21:10
  • 26
    I ended up doing sudo apt-get install libudev1:i386 and then sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0 Jul 9, 2014 at 15:56
  • I had to enter this command to get google-webdesigner to install on Debian 64 bit
    – HoboBen
    Aug 17, 2015 at 15:56
  • 2
    Please install the old version from here: packages.ubuntu.com/precise/libudev0
    – rubo77
    Oct 30, 2015 at 15:59
  • Package libudev0 is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source Dec 31, 2016 at 21:07
5

This error might happen when trying to use nw executable from Node Webkit. Like this:

./nw: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory

How to solve:

  1. Get hex editor that allows you to change ASCII string of binary, eg. hexedit:

    • In terminal(Ctrl+Alt+T), run: sudo apt-get install hexedit.
    • Follow instructions presented in terminal(type password if needed, confirm install).
  2. Go to directory with node webkit:
    • In my case: cd ~/Dokumenty/node-webkit-*.
  3. Open nw binary using hex editor command preceded with sudo:
    • Run: sudo hexedit nw.
  4. Search for libudev.so.0 as ASCII string:
    • If using hexedit: Press Tab.
    • Press Ctrl+S.
    • Type: libudev.so.0.
  5. Change 0 in libudev.so.0 string to 1, so it becomes: libudev.so.1:
    • Use arrow keys to select 0 in libudev.so.0 string.
    • Press 1 on keyboard.
  6. Exit and save changes.
    • Press Ctrl+X.
    • Press Y to save changes.

You're done. This also fixes problem with Atraci binary when following same instructions except hex editing Atraci file instead of nw.

1
  • 2
    cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nw and then you can run it, no need to install anything
    – Catalyst
    Jan 31, 2015 at 5:50
4

The only answer here that works on Ubuntu 14.04 is the accepted answer, and since many comments point out that this can cause issues with the system down the road (although I don't know about that myself) I came up with a compromise. This script will prompt (in the terminal) for your root password. It will create the symbolic link and launch the application (in my case, popcorn time). When you quit the application, it will use the existing sudo session to remove the symbolic link:

#!/bin/sh
sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
./Popcorn-Time #replace this line with the path to the executable you want to launch
sudo rm /lib/i386-linux-gnu/libudev.so.0
3
  • I like this idea, although I wonder if there is a way to use LD_LIBRARY environment variable instead.
    – Flimm
    Apr 28, 2015 at 21:19
  • @Flimm, let me know how you get on. Apr 30, 2015 at 13:11
  • 1
    I ended up going with this answer instead.
    – Flimm
    Apr 30, 2015 at 13:15
4

I just found a way to make this work, is pretty silly though.

I have Google Chrome installed on my system and Chrome has this shared object embedded. So, I just had to make a symbolic link to the library on Chrome installation directory.

ln -sf /opt/google/chrome/libudev.so.0 /lib/x86_64-linux-gnu/libudev.so.0

It works pretty fine for me.

4

This was simplest solution I found

sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
2

as Phil Strong pointed out

install libudev.so.1

sudo apt-get install libudev1:i386

then link it as libudev.so.0

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
1

i did this on 14.04, but should be similar. just delete the package and re-install. the correct libraries are installed appropriately.

apt-get purge google-chrome-stable
apt-get install google-chrome-stable

i'm sure the other answers work, but i have a basic beef in modifying file system objects that are managed by configuration management packages.

1

This is what I used to solve the same problem on 32 bit Ubuntu 15.04.

cd i386-linux-gnu
sudo ln -sf libudev.so.1 libudev.so.0
0

UPDATE I made a bash script to wrap around the program you want to execute. You can add it to your local bin folder and just start the program without the copy & pasting or running shell scripts.

#!/bin/bash

ProgramToExecute="/PATH/TO/PROGRAM" #Example: $HOME/dart/./DartEditor

system=$(uname -m) #Returns x86_64 on 64 bit systems
libdir="/lib/$system-linux-gnu"
libudev1="$libdir/libudev.so.1"

if [ ! -f $libudev1 ]
then
        #check if an i386 folder exist because ' uname -m' returns i686 instead of i386.
        libdir="/lib/i386-linux-gnu"
        libudev1="$libdir/libudev.so.1"
        #if none of the lookups return a file, this script exits,
        BreakUpNotice="This $libudev1 isn't working out. It's not you
        it's me. Or maybe you forgot to install libudev1 library.
        sudo apt-get install libudev1 "

        [ ! -f $libudev1 ] && echo $BreakUpNotice  && exit 0
fi

libudev0="$libdir/libudev.so.0"

echo "$libudev1 found."
sudo ln -sf $libudev1 $libudev0
sudo -k #revoke sudo 
$($ProgramToExecute)

NoticeAfterExec="Enter sudo to del libudev link (recommended) or press CTRL+C to cancel."
RmSuccess="And $libudev0 link is gone."
RmFailed="Whaat? $libudev0 still exists."

echo $NoticeAfterExec
sudo rm $libudev0
sudo -k
[ ! -f "$libudev0" ]  && echo $RmSuccess || echo $RmFailed
exit 

OLD ANSWER In Ubuntu 14.04 I was getting the error message from the Dart Editor when trying to use Live Preview (Chromium). The error was solved by installing libudev1 and creating a symbolic link.

    sudo apt-get install libudev1

I also used the script mentioned above by TenLeftFingers to execute DartEditor.

    #!/bin/sh
    sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
    ./DartEditor
    sudo rm /lib/i386-linux-gnu/libudev.so.0

If the Dart Editor doesn't execute make sure JAVA is installed and that is not a permission issue.

    sudo apt-get install python-software-properties
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update
    sudo apt-get install oracle-java7-installer

and make the IDE executable:

    sudo chmod a+x ./DartEditor

This worked for me.

0

I was getting the same error on my 32-bit system after upgrading from Xubuntu Precise to Trusty. This fixed it for me:

sudo dpkg-reconfigure google-chrome-stable

I found it here. With absolutely no parameters, I'm not quite sure how this fixed it, but it did. What I liked best is that it didn't require doing anything that would potentially cause problems for me in the future, and didn't require me hunting down any packages.

-1

If anyone stumble upon this page while digging the web for fixes on the libudev.so.0 & the Emotiv Epoc SDK Dev Edition on Ubuntu, I hope the following will help:

// my config is 64bit Ubuntu 13.04

For a 64-bit system:

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1. /lib/x86_64-linux-gnu/libudev.so.1

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

what allows to prevent the "error while loading shared libraries: libudev.so.0: wrong ELF class: ELFCLASS32"

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

For a 32-bit system:

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1. /lib/i386-linux-gnu/libudev.so.1

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0

what allows to prevent the "error while loading shared libraries: libudev.so.0: wrong ELF class: ELFCLASS64" ( note that's a guess, I'm on a 64 bit system )

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

The EmotivControlPanel, EmoKey, EmoComposer, the Java examples & little customized Qt examples should be able tu run after doing the above ( I already tried all the steps above + others found on the web ( stack overflow, .. ), but none were working for me, so that's what I ended up doing after some "try & errors"

Last but not least, If anyone here knows how to run programs compiled against 32bit libs on a 64bit system WHILE SPECIFYING TO USE A PROVIDED 3RD PARTY 32BIT LIBRARY ?

more precisely, for those who knows what I'm talking about, how am I supposed to run the "EmoCube" & "BlueAvatar" Qt examples on my 64bit system ?

--> for what I've tried so far, the most I could get was: "error while loading shared libraries: libedk.so.1: wrong ELF class: ELFCLASS64"

I guess that a symlink to that lib in the i386 directory wouldn't make it ( although I did not try it yet ), so if anyone has an answer ... I.m looking forward to reading it.

Cheers all +

-4

Run these commands in a terminal:

cd /lib/x86_64-linux-gnu/
sudo cp libudev.so.0.13.0 libudev.so.1

This has helped me

1
  • cd /lib/x86_64-linux-gnu/ sudo cp libudev.so.0.13.0 libudev.so.1
    – user214274
    Nov 10, 2013 at 6:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .