electron/docs/development/build-instructions-linux.md
Suyash 860b15ef8a 📝 add troubleshooting instructions for libudev.so.0 failure
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
2015-03-11 12:17:22 +05:30

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