Table of Contents
1 Why notes
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
sudo apt-get install build-essentials
Then get the full set of build dependencies for last emacs, emacs24:
sudo apt-get build-dep 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.
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
cd bld-25.1 ../emacs-25.1/configure \ --prefix=~/install/emacs-25.1 \ --with-x-toolkit=gtk3 \ --with-xwidgets \ CFLAGS=-no-pie
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:
make make install
I have a bin directory early in $PATH so that I can select versions of local software ahead of system software.
cd ~/bin ln -s ~/install/emacs-25.1/bin/emacs ln -s ~/install/emacs-25.1/bin/emacsclient
Now you should have a working emacs 25.1 available.