Adding the easiest solution for solving the missing libudev.so.0 error on ubuntu 13.04+. I had to do this on my own machine running ubuntu 14.04.2 to build atom. The solution is also referenced in https://github.com/nwjs/nw.js/wiki/The-solution-of-lacking-libudev.so.0
2.9 KiB
Build instructions (Linux)
Prerequisites
- Node.js
- Clang 3.4 or later
- Development headers of GTK+ and libnotify
On Ubuntu you could install the libraries via:
$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev libnotify-dev libgnome-keyring-dev libgconf2-dev gcc-multilib g++-multilib
Latest Node.js could be installed via ppa:
$ sudo apt-get install python-software-properties software-properties-common
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo apt-get update
$ sudo apt-get install nodejs
# Update to latest npm
$ sudo npm install npm -g
Getting the code
$ git clone https://github.com/atom/atom-shell.git
Bootstrapping
The bootstrap script will download all necessary build dependencies and create
build project files. Notice that we're using ninja
to build atom-shell
so
there is no Makefile
generated.
$ cd atom-shell
$ ./script/bootstrap.py -v
Building
Build both Release
and Debug
targets:
$ ./script/build.py
You can also only build the Debug
target:
$ ./script/build.py -c Debug
After building is done, you can find atom
under out/Debug
.
Troubleshooting
fatal error: bits/predefs.h: No such file or directory
If you got an error like this:
In file included from /usr/include/stdio.h:28:0,
from ../../../svnsrc/libgcc/../gcc/tsystem.h:88,
from ../../../svnsrc/libgcc/libgcc2.c:29:
/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory
#include <bits/predefs.h>
Then you need to install gcc-multilib
and g++-multilib
, on Ubuntu you can do
this:
$ sudo apt-get install gcc-multilib g++-multilib
error adding symbols: DSO missing from command line
If you got an error like this:
/usr/bin/ld: vendor/download/libchromiumcontent/Release/libchromiumcontent.so: undefined reference to symbol 'gconf_client_get'
//usr/lib/x86_64-linux-gnu/libgconf-2.so.4: error adding symbols: DSO missing from command line
libchromiumcontent.so is build with clang 3.0 which is incompatible with newer versions of clang. Try using clang 3.0, default version in Ubuntu 12.04.
libudev.so.0 missing
If you get an error like:
/usr/bin/ld: warning: libudev.so.0, needed by /home/suyash/projects/atom-shell/vendor/brightray/vendor/download/libchromiumcontent/Release/libchromiumcontent.so, not found (try using -rpath or -rpath-link)
and you are on Ubuntu 13.04+, 64 bit system, try doing
sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1.3.5 /usr/lib/libudev.so.0
for ubuntu 13.04+ 32 bit systems, try doing
sudo ln -s /lib/i386-linux-gnu/libudev.so.1.3.5 /usr/lib/libudev.so.0
also see
https://github.com/nwjs/nw.js/wiki/The-solution-of-lacking-libudev.so.0
Tests
$ ./script/test.py