asm/errno.h: No such file or directory
I got the same error on ubuntu-xenial 4.4.0-75-generic
.
I found I had a /usr/include/asm-generic
folder, but no /usr/include/asm
, which gcc was looking for.
Creating a symlink solved it for me.
sudo ln -s /usr/include/asm-generic/ /usr/include/asm
Fair warning: Although, sometimes, one has to do this kind of trickery, it's not always a good idea just because it works. I'm doing this in a virtual machine, which I can recreate by running a simple script, and that is why it's no big deal if I break something.
The asm/errno.h
header is provided by a variety of packages. Odd that gcc
would require it, but you can try:
sudo apt-get install linux-libc-dev
You also need to tell GCC to look for an architecture and OS specific location for the headers:
../configure --build=x86_64-linux-gnu
(or i386-linux-gnu
for 32-bit Ubuntu).
It's highly recommended when building stuff from source that you use --prefix
flag (and with GCC, the --program-suffix
flag) while configuring. Since you haven't, try running /usr/bin/gcc
.
Thus:
tar xf gcc-4.8.1.tar.gz
mkdir gcc
cd gcc
../gcc-4.8.1/configure --build=x86_64-linux-gnu --prefix=/usr/local --program-suffix=-4.8.1
make -j
sudo make install
Now your GCC binaries will be installed to /usr/local/bin/
, and other things in other folders in /usr/local
.
For example:
$ /usr/local/bin/gcc-4.8.1 # or simply gcc-4.8.1, since this folder is in your PATH
Note how I'm running configure
and make
from a different directory, outside of where the GCC source is? That's how the GCC docs recommend that GCC be built.