Building Emacs 25.1 on Ubuntu 16.10
Table of Contents
1 Why notes
Making notes so I don't forget, although the key problem is fixed upstream.
Ubuntu 16.10 (Yakkety Yak) has made a critical change to the system compiler, and everything is by default built with position independent executable support (PIE), in order to get better support for address space layout randomization. Here are the security notes for PIE. Emacs does not dump successfully with this. The compiler option -no-pie needs to be added into CLFAGS.
The option also means that static libraries you've built before will probably need to be rebuilt. See the link above for typical errors.
2 Getting Ready
First get dpkg-dev, g++, gcc, libc, make:
Then get the full set of build dependencies for last emacs, emacs24:
Decide if you want to build just this version, or track emacs. I track from git, because. So I have a directory for emacs where I have master, emacs25, and build directories. I try to avoid building in src dirs. It makes it easier to try out different options without polluting the src.
sudo apt-get install build-essentials
sudo apt-get build-dep emacs24
mkdir -p ~/bld/emacs cd ~/bld/emacs git clone git://git.savannah.gnu.org/emacs.git cd emacs.git git worktree add ../emacs-25.1 emacs-25.1 cd .. mkdir bld-25.1
3 Configure and build with magic option
Now configure in the build directory:
I built with xwidget support to play with the embedded webkit widget. It's not really useable as a browser, but has uses for rendering. I also install into a local program directory, under my homedir.
Build and install:
I have a bin directory early in $PATH so that I can select versions of local software ahead of system software.
Now you should have a working emacs 25.1 available.
cd bld-25.1 ../emacs-25.1/configure \ --prefix=~/install/emacs-25.1 \ --with-x-toolkit=gtk3 \ --with-xwidgets \ CFLAGS=-no-pie
make make install
cd ~/bin
ln -s ~/install/emacs-25.1/bin/emacs
ln -s ~/install/emacs-25.1/bin/emacsclient