Bug 48879 - Compilation cannot find file asm/errno.h
Summary: Compilation cannot find file asm/errno.h
Status: RESOLVED INVALID
Alias: None
Product: gcc
Classification: Unclassified
Component: bootstrap (show other bugs)
Version: 4.7.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-05 05:10 UTC by Blanca Mancilla
Modified: 2013-10-21 08:34 UTC (History)
4 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments
output of "gcc -v -x c /dev/null -c" (1.03 KB, text/plain)
2011-05-05 22:05 UTC, Blanca Mancilla
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Blanca Mancilla 2011-05-05 05:10:23 UTC
Hi,
I recently upgraded from Ubuntu 10.10 to 11.04, and upon the first attempted compilation of 4.7.0, it crashed complaining of:

------------------------------------------------------------------------------
In file included from /usr/include/bits/errno.h:25:0,
                 from /usr/include/errno.h:36,
                 from /home/mancilla/current/soft/src/gcc-build-latest/../gcc-svn/libgcc/../gcc/tsystem.h:93,
                 from /home/mancilla/current/soft/src/gcc-build-latest/../gcc-svn/libgcc/../gcc/libgcc2.c:29:
/usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
compilation terminated.
ake[3]: *** [_muldi3.o] Error 1
make[3]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest/x86_64-unknown-linux-gnu/libgcc'
make[2]: *** [all-stage1-target-libgcc] Error 2
make[2]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest'
make: *** [all] Error 2

-------------------------------------------------------------------------------

After much browsing mailing lists and bug reports everywhere, it seems that the problem lies on the linux headers (?). The directory in question used to be /usr/include/linux and in my case it is now /usr/include/x86_64-linux-gnu. After following sugestions, I tried setting CPPFLAGS, CFLAGS and CXXFLAGS to -I/usr/include/x86_64-linux-gnu and then "-isystem /usr/include/x86_64-linux-gnu" when calling configure and the result was: at first CPPFLAGS was ignored and the same error accurred (setting CPPFLAGS). Then stage 1 completed and the same error occurred at the begining of stage 2 (setting just CFLAGS). Setting both CFLAGS nad CXXFLAGS got the compilation further, but still a similar error. In this last attempt, it did not make a difference whether
it was -I or -isystem:

----------------------------------------------------------------------------

In file included from /usr/include/bits/errno.h:25:0,
                 from /usr/include/errno.h:36,
                 from /home/mancilla/current/soft/src/gcc-build-latest/../gcc-svn/libiberty/fnmatch.c:46:
/usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
compilation terminated.
make[3]: *** [fnmatch.o] Error 1
make[3]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest/libiberty'
make[2]: *** [all-stage2-libiberty] Error 2
make[2]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest'
make[1]: *** [stage2-bubble] Error 2
make[1]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest'
make: *** [all] Error 2

-----------------------------------------------------------------------------

I'm not too sure it this is the right place for reporting this. But it seems that the compilation needs to know where is errno.h. Please let me know if it is necessary to attach the full log of the build.

Any advice would be greatfully appreciated. 

Regards,
Blanca
Comment 1 Blanca Mancilla 2011-05-05 08:48:29 UTC
I succeeded in compiling by serring the following environment variables:

export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu

is this the right way?

Blanca

(In reply to comment #0)
> Hi,
> I recently upgraded from Ubuntu 10.10 to 11.04, and upon the first attempted
> compilation of 4.7.0, it crashed complaining of:
> 
> ------------------------------------------------------------------------------
> In file included from /usr/include/bits/errno.h:25:0,
>                  from /usr/include/errno.h:36,
>                  from
> /home/mancilla/current/soft/src/gcc-build-latest/../gcc-svn/libgcc/../gcc/tsystem.h:93,
>                  from
> /home/mancilla/current/soft/src/gcc-build-latest/../gcc-svn/libgcc/../gcc/libgcc2.c:29:
> /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or
> directory
> compilation terminated.
> ake[3]: *** [_muldi3.o] Error 1
> make[3]: Leaving directory
> `/home/mancilla/current/soft/src/gcc-build-latest/x86_64-unknown-linux-gnu/libgcc'
> make[2]: *** [all-stage1-target-libgcc] Error 2
> make[2]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest'
> make[1]: *** [stage1-bubble] Error 2
> make[1]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest'
> make: *** [all] Error 2
> 
> -------------------------------------------------------------------------------
> 
> After much browsing mailing lists and bug reports everywhere, it seems that the
> problem lies on the linux headers (?). The directory in question used to be
> /usr/include/linux and in my case it is now /usr/include/x86_64-linux-gnu.
> After following sugestions, I tried setting CPPFLAGS, CFLAGS and CXXFLAGS to
> -I/usr/include/x86_64-linux-gnu and then "-isystem
> /usr/include/x86_64-linux-gnu" when calling configure and the result was: at
> first CPPFLAGS was ignored and the same error accurred (setting CPPFLAGS). Then
> stage 1 completed and the same error occurred at the begining of stage 2
> (setting just CFLAGS). Setting both CFLAGS nad CXXFLAGS got the compilation
> further, but still a similar error. In this last attempt, it did not make a
> difference whether
> it was -I or -isystem:
> 
> ----------------------------------------------------------------------------
> 
> In file included from /usr/include/bits/errno.h:25:0,
>                  from /usr/include/errno.h:36,
>                  from
> /home/mancilla/current/soft/src/gcc-build-latest/../gcc-svn/libiberty/fnmatch.c:46:
> /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or
> directory
> compilation terminated.
> make[3]: *** [fnmatch.o] Error 1
> make[3]: Leaving directory
> `/home/mancilla/current/soft/src/gcc-build-latest/libiberty'
> make[2]: *** [all-stage2-libiberty] Error 2
> make[2]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest'
> make[1]: *** [stage2-bubble] Error 2
> make[1]: Leaving directory `/home/mancilla/current/soft/src/gcc-build-latest'
> make: *** [all] Error 2
> 
> -----------------------------------------------------------------------------
> 
> I'm not too sure it this is the right place for reporting this. But it seems
> that the compilation needs to know where is errno.h. Please let me know if it
> is necessary to attach the full log of the build.
> 
> Any advice would be greatfully appreciated. 
> 
> Regards,
> Blanca
Comment 2 Jonathan Wakely 2011-05-05 09:11:44 UTC
Shouldn't this be Component=bootstrap not c++ ?

I assume the linux-libc-dev package is installed? That provides asm/errno.h

What compiler are you using to bootstrap? If it's the standard system compiler it should know to look in /usr/include/x86_64-linux-gnu, if not then it's a bug in the Ubuntu gcc package

What is the output of "gcc -v -x c /dev/null -c" ?
Comment 3 Richard Biener 2011-05-05 10:43:54 UTC
This is an Ubuntu packaging issue (or you lack some package), not a GCC issue,
as errno.h is a standard header.
Comment 4 Blanca Mancilla 2011-05-05 22:05:53 UTC
Created attachment 24195 [details]
output of "gcc -v -x c /dev/null -c"
Comment 5 Blanca Mancilla 2011-05-05 22:09:28 UTC
(In reply to comment #2)
> Shouldn't this be Component=bootstrap not c++ ?

Yes, sorry.

> I assume the linux-libc-dev package is installed? That provides asm/errno.h

Yes that is installed.

> What compiler are you using to bootstrap? If it's the standard system compiler
> it should know to look in /usr/include/x86_64-linux-gnu, if not then it's a bug
> in the Ubuntu gcc package

4.5.2, which came with the distribution.
 
> What is the output of "gcc -v -x c /dev/null -c" ?

Is is attached.

A bug in the Ubuntu gcc package confirms the fact that problems started after the upgrade. Thanks for clearing things out.

Regards,
Blanca
Comment 6 davek 2011-11-15 21:11:04 UTC
On Ubuntu 11.10 (oneiric), linux-libc-dev installs to /usr/include/i386-linux-gnu (or whatever your arch is, I suspect).  In order to get gcc to build, I had to symlink the dir:

sudo ln -s /usr/include/i386-linux-gnu/asm /usr/include/asm

Whether it's a bug in ubuntu gcc, or the libc-dev package, I dunno.
Comment 7 eric 2012-07-03 16:12:57 UTC
I had the same problem, and fixed it by copying "/usr/include/i386-linux-gnu/" from another 32bit system to your current system.

I your system doesn't have /usr/include/i386-linux-gnu/, GCC cannot find the right PATH to i386-linux-gnu
Comment 8 Branko Drevensek 2013-10-21 08:34:22 UTC
This still happens with Ubuntu 12.04.3 and gcc 4.8.2. Are you sure this is just ubuntu error?
I had to install linux-libc-dev:i386, but I'm building on 64 bit system for the host (which has properly installed linux-libc-dev that existing gcc has in include search path).