On Fri, Aug 21, 2020 at 4:52 PM Pierre Labastie via blfs-support
<blfs-support@lists.linuxfromscratch.org> wrote:
>
> On Fri, 2020-08-21 at 16:14 -0400, Chris Gorman via blfs-support wrote:
> > On Fri, Aug 21, 2020 at 3:47 PM Pierre Labastie via blfs-support
> > <blfs-support@lists.linuxfromscratch.org> wrote:
> > > On Fri, 2020-08-21 at 13:44 -0400, Chris Gorman via blfs-support
> > > wrote:
> > > > Hello All,
> > > >
> > > > I am trying to build a sysv BLFS system off of LFS-10.0-rc1 and
> > > > am
> > > > getting an odd error with header files.  The compiler is failing
> > > > complaining about missing headers that are present on the
> > > > system.  I
> > > > have experienced this with two packages, gcc and mesa.
> > > >
> > > > Attempting to build gcc I get ...
> > > >
> > > > g++ -std=gnu++98 -c   -g -DIN_GCC     -fno-exceptions -fno-rtti
> > > > -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-
> > > > strings
> > > > -Wcast-qual -Wno-error=format-diag -Wno-format
> > > > -Wmissing-format-attribute -Woverloaded-virtual -pedantic
> > > > -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings
> > > > -fno-common  -DHAVE_CONFIG_H  -DGENERATOR_FILE -fno-PIE -I.
> > > > -Ibuild
> > > > -I../../gcc -I../../gcc/build -I../../gcc/../include
> > > > -I../../gcc/../libcpp/include  \
> > > >     -o build/genhooks.o ../../gcc/genhooks.c
> > > > In file included from ../../gcc/system.h:266,
> > > >                  from ../../gcc/gengenrtl.c:22:
> > > > /usr/include/c++/10.2.0/cstdlib:75:15: fatal error: stdlib.h: No
> > > > such
> > > > file or directory
> > > >    75 | #include_next <stdlib.h>
> > > >       |               ^~~~~~~~~~
> > > > compilation terminated.
> > > > make[3]: *** [Makefile:2723: build/gengenrtl.o] Error 1
> > > > make[3]: *** Waiting for unfinished jobs....
> > > > In file included from ../../gcc/system.h:266,
> > > >                  from ../../gcc/sort.cc:38:
> > > > /usr/include/c++/10.2.0/cstdlib:75:15: fatal error: stdlib.h: No
> > > > such
> > > > file or directory
> > > >    75 | #include_next <stdlib.h>
> > > >       |               ^~~~~~~~~~
> > > > compilation terminated.
> > > > make[3]: *** [Makefile:2723: build/sort.o] Error 1
> > > > In file included from ../../gcc/system.h:266,
> > > >                  from ../../gcc/genhooks.c:21:
> > > > /usr/include/c++/10.2.0/cstdlib:75:15: fatal error: stdlib.h: No
> > > > such
> > > > file or directory
> > > >    75 | #include_next <stdlib.h>
> > > >       |               ^~~~~~~~~~
> > > > compilation terminated.
> > > > make[3]: *** [Makefile:2723: build/genhooks.o] Error 1
> > > > /bin/sh ../../gcc/../move-if-change tmp-mlib.h multilib.h
> > > > echo timestamp > s-mlib
> > > > /bin/sh ../../gcc/../move-if-change tmp-optionlist optionlist
> > > > echo timestamp > s-options
> > > > make[3]: Leaving directory '/sources/gcc/gcc-10.2.0/build/gcc'
> > > > make[2]: *** [Makefile:4744: all-stage1-gcc] Error 2
> > > > make[2]: Leaving directory '/sources/gcc/gcc-10.2.0/build'
> > > > make[1]: *** [Makefile:25317: stage1-bubble] Error 2
> > > > make[1]: Leaving directory '/sources/gcc/gcc-10.2.0/build'
> > > > make: *** [Makefile:1000: all] Error 2
> > > >
> > > > And when trying to build mesa I get ...
> > > >
> > > > [68/2168] Compiling C++ object
> > > > src/compiler/libcompiler.a.p/glsl_types.cpp.o
> > > > FAILED: src/compiler/libcompiler.a.p/glsl_types.cpp.o
> > > > c++ -Isrc/compiler/libcompiler.a.p -Isrc/compiler
> > > > -I../src/compiler
> > > > -Isrc/mapi -I../src/mapi -Isrc/mesa -I../src/mesa -Iinclude
> > > > -I../include -Isrc -I../src -I../src/gallium/include
> > > > -Isrc/gallium/auxiliary -I../src/gallium/auxiliary
> > > > -fdiagnostics-color=always -DNDEBUG -pipe -D_FILE_OFFSET_BITS=64
> > > > -Wall
> > > > -Winvalid-pch -Wnon-virtual-dtor -std=c++14 -O3
> > > > -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
> > > > -D__STDC_LIMIT_MACROS
> > > > '-DPACKAGE_VERSION="20.1.5"'
> > > > '-DPACKAGE_BUGREPORT="
> > > > https://gitlab.freedesktop.org/mesa/mesa/-/issues";'
> > > > -DUSE_ELF_TLS -DHAVE_ST_VDPAU -DENABLE_ST_OMX_BELLAGIO=0
> > > > -DENABLE_ST_OMX_TIZONIA=0 -DHAVE_X11_PLATFORM
> > > > -DGLX_INDIRECT_RENDERING
> > > > -DGLX_DIRECT_RENDERING -DGLX_USE_DRM -DHAVE_DRM_PLATFORM
> > > > -DHAVE_SURFACELESS_PLATFORM -DENABLE_SHADER_CACHE
> > > > -DHAVE___BUILTIN_BSWAP32 -DHAVE___BUILTIN_BSWAP64
> > > > -DHAVE___BUILTIN_CLZ
> > > > -DHAVE___BUILTIN_CLZLL -DHAVE___BUILTIN_CTZ
> > > > -DHAVE___BUILTIN_EXPECT
> > > > -DHAVE___BUILTIN_FFS -DHAVE___BUILTIN_FFSLL
> > > > -DHAVE___BUILTIN_POPCOUNT
> > > > -DHAVE___BUILTIN_POPCOUNTLL -DHAVE___BUILTIN_UNREACHABLE
> > > > -DHAVE_FUNC_ATTRIBUTE_CONST -DHAVE_FUNC_ATTRIBUTE_FLATTEN
> > > > -DHAVE_FUNC_ATTRIBUTE_MALLOC -DHAVE_FUNC_ATTRIBUTE_PURE
> > > > -DHAVE_FUNC_ATTRIBUTE_UNUSED
> > > > -DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT
> > > > -DHAVE_FUNC_ATTRIBUTE_WEAK -DHAVE_FUNC_ATTRIBUTE_FORMAT
> > > > -DHAVE_FUNC_ATTRIBUTE_PACKED
> > > > -DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL
> > > > -DHAVE_FUNC_ATTRIBUTE_VISIBILITY -DHAVE_FUNC_ATTRIBUTE_ALIAS
> > > > -DHAVE_FUNC_ATTRIBUTE_NORETURN -DHAVE_UINT128 -D_GNU_SOURCE
> > > > -DUSE_SSE41 -DUSE_GCC_ATOMIC_BUILTINS -DUSE_X86_64_ASM
> > > > -DMAJOR_IN_SYSMACROS -DHAVE_LINUX_FUTEX_H -DHAVE_ENDIAN_H
> > > > -DHAVE_DLFCN_H -DHAVE_EXECINFO_H -DHAVE_SYS_SHM_H -DHAVE_CET_H
> > > > -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_TIMESPEC_GET
> > > > -DHAVE_MEMFD_CREATE
> > > > -DHAVE_RANDOM_R -DHAVE_FLOCK -DHAVE_STRTOK_R
> > > > -DHAVE_PROGRAM_INVOCATION_NAME -DHAVE_POSIX_MEMALIGN
> > > > -DHAVE_DIRENT_D_TYPE -DHAVE_STRTOD_L -DHAVE_DLADDR
> > > > -DHAVE_DL_ITERATE_PHDR -DHAVE_ZLIB -DHAVE_ZSTD -DHAVE_PTHREAD
> > > > -DHAVE_PTHREAD_SETAFFINITY -DHAVE_LIBDRM -DLLVM_AVAILABLE
> > > > '-DMESA_LLVM_VERSION_STRING="10.0.1"' -DHAVE_WAYLAND_PLATFORM
> > > > -DWL_HIDE_DEPRECATED -DHAVE_DRI3 -DHAVE_DRI3_MODIFIERS
> > > > -Werror=return-type -Werror=empty-body -Wno-non-virtual-dtor
> > > > -Wno-missing-field-initializers -Wno-format-truncation -fno-math-
> > > > errno
> > > > -fno-trapping-math -flifetime-dse=1 -Werror=format -Wformat-
> > > > security
> > > > -fPIC -fvisibility=hidden -Werror=pointer-arith -Werror=vla -MD
> > > > -MQ
> > > > src/compiler/libcompiler.a.p/glsl_types.cpp.o -MF
> > > > src/compiler/libcompiler.a.p/glsl_types.cpp.o.d -o
> > > > src/compiler/libcompiler.a.p/glsl_types.cpp.o -c
> > > > ../src/compiler/glsl_types.cpp
> > > > In file included from ../include/c99_math.h:194,
> > > >                  from ../src/util/u_math.h:42,
> > > >                  from ../src/mesa/main/macros.h:35,
> > > >                  from ../src/compiler/glsl_types.cpp:25:
> > > > /usr/include/c++/10.2.0/cmath:45:15: fatal error: math.h: No such
> > > > file
> > > > or directory
> > > >    45 | #include_next <math.h>
> > > >       |               ^~~~~~~~
> > > > compilation terminated.
> > > > [69/2168] Generating nir_builder_opcodes.h with a meson_exe.py
> > > > custom
> > > > command
> > > > [70/2168] Generating marshal_generated2.c with a meson_exe.py
> > > > custom
> > > > command
> > > > [71/2168] Generating marshal_generated4.c with a meson_exe.py
> > > > custom
> > > > command
> > > > [72/2168] Generating es1_glapi_mapi_tmp.h with a meson_exe.py
> > > > custom
> > > > command
> > > > [73/2168] Generating nir_constant_expressions.c with a
> > > > meson_exe.py
> > > > custom command
> > > > [74/2168] Generating indirect.h with a meson_exe.py custom
> > > > command
> > > > [75/2168] Generating es2_glapi_mapi_tmp.h with a meson_exe.py
> > > > custom
> > > > command
> > > > [76/2168] Generating indirect_init.c with a meson_exe.py custom
> > > > command
> > > > [77/2168] Generating indirect_size.h with a meson_exe.py custom
> > > > command
> > > > [78/2168] Generating indirect_size.c with a meson_exe.py custom
> > > > command
> > > > [79/2168] Generating shared_glapi_mapi_tmp.h with a meson_exe.py
> > > > custom command
> > > > [80/2168] Generating format_srgb with a meson_exe.py custom
> > > > command
> > > > [81/2168] Compiling C object
> > > > src/util/format/libmesa_format.a.p/meson-
> > > > generated_.._u_format_table.c.o
> > > > ninja: build stopped: subcommand failed.
> > > >
> > > > Both stdlib.h and math.h are on the system.
> > > >
> > > > chris [ /mnt/build_dir ]$ find ./usr/include -name "math.h"
> > > > ./usr/include/c++/10.2.0/tr1/math.h
> > > > ./usr/include/c++/10.2.0/math.h
> > > > ./usr/include/math.h
> > > >
> > > > chris [ /mnt/build_dir ]$ find ./usr/include -name "stdlib.h"
> > > > ./usr/include/c++/10.2.0/tr1/stdlib.h
> > > > ./usr/include/c++/10.2.0/stdlib.h
> > > > ./usr/include/stdlib.h
> > > > ./usr/include/bits/stdlib.h
> > > >
> > > > I tried a google search and found
> > > > https://blfs-dev.linuxfromscratch.narkive.com/so2k0krL/math-h-no-such-file-or-directory-from-gcc
> > > >
> > > > After reading the thread I tried to run
> > > >
> > > > /usr/libexec/gcc/x86_64-pc-linux-gnu/10.2.0/install-
> > > > tools/mkheaders
> > > >
> > > > as root but I still get the errors when trying to build.
> > > >
> > > > Hoping someone has experienced this and can help.  Thanks in
> > > > advance.
> > >
> > > There have been several reports of this in the past without clear
> > > solution. The problem seems to lie in the order of include
> > > directories.
> > > You can see that order using gcc -v. Exactly:
> > > echo main'(){}' | g++ -v -xc++ -
> > >
> > > should return:
> > > [...]
> > > #include "..." search starts here:
> > > #include <...> search starts here:
> > >  /usr/lib/gcc/x86_64-pc-linux-
> > > gnu/10.2.0/../../../../include/c++/10.2.0
> > >  /usr/lib/gcc/x86_64-pc-linux-
> > > gnu/10.2.0/../../../../include/c++/10.2.0/x86_64-pc-linux-gnu
> > >  /usr/lib/gcc/x86_64-pc-linux-
> > > gnu/10.2.0/../../../../include/c++/10.2.0/backward
> > >  /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include
> > >  /usr/local/include
> > >  /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed
> > >  /usr/include
> > > [...]
> > >
> > I get the same content in a different order.  I get
> > [...]
> > #include "..." search starts here:
> > #include <...> search starts here:
> >  /usr/include
> >  /usr/lib/gcc/x86_64-pc-linux-
> > gnu/10.2.0/../../../../include/c++/10.2.0
> >  /usr/lib/gcc/x86_64-pc-linux-
> > gnu/10.2.0/../../../../include/c++/10.2.0/x86_64-pc-linux-gnu
> >  /usr/lib/gcc/x86_64-pc-linux-
> > gnu/10.2.0/../../../../include/c++/10.2.0/backward
> >  /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include
> >  /usr/local/include
> >  /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed
> > [...]
> > > If the order is the same as above for you, then I am at loss.
> > >
> > > Pierre
> > >
> > > --
> > > http://lists.linuxfromscratch.org/listinfo/blfs-support
> > > FAQ: http://www.linuxfromscratch.org/blfs/faq.html
> > > Unsubscribe: See the above information page
> >
> > I can get the same results when trying to build a simple program.
> >
> > root [ ~ ]# cat try.cc
> > #include <cstdlib>
> > root [ ~ ]# g++ -c try.cc
> > In file included from try.cc:1:
> > /usr/include/c++/10.2.0/cstdlib:75:15: fatal error: stdlib.h: No such
> > file or directory
> >    75 | #include_next <stdlib.h>
> >       |               ^~~~~~~~~~
> > compilation terminated.
> >
> > Same goes for ...
> >
> > root [ ~ ]# cat try1.cc
> > #include <cmath>
> > root [ ~ ]# g++ -c try1.cc
> > In file included from try1.cc:1:
> > /usr/include/c++/10.2.0/cmath:45:15: fatal error: math.h: No such
> > file
> > or directory
> >    45 | #include_next <math.h>
> >       |               ^~~~~~~~
> > compilation terminated.
> >
> > I thought it might be related to
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129 , but I don't
> > think
> > so any more.
> >
> > The system is a jhalfs built of lfs-10.0-rc1.  This is my first time
> > using jhalfs, so I could have broken something in the build, although
> > I'm not sure exactly how.
> >
> > Any chance you can try my little examples on your machine Pierre and
> > see what you get?
> >
> > Thanks for your time.
>
> Just tried the first one, because the reason is the include order (see
> explanations below)
> pierre [ ~/build ]$ cat try.cc
> #include <cstdlib>
> pierre [ ~/build ]$ g++ -c try.cc
> pierre [ ~/build ]$ ls
> try.cc try.o
>
> Explanation: As you can see from your "find" in the first message,
> there is stdlib.h in /usr/include/c++/10.2.0/stdlib.h, that is in the
> same directory as cstdlib. But cstdlib does not want to include the
> stdlib.h from that directory, it wants the one from /usr/include. This
> is the role of the #include_next directive, which includes a header
> from the next directory in the include order. Since /usr/include is
> first in your include order, it is not found by #include_next...
>
> Now, how to put the include search in the right order, I am not sure.
>
> Maybe add CPPFLAGS="$CPPFLAGS -idirafter /usr/include" when compiling
> gcc, and expecting that the newly compiled gcc gets the right include
> order.
Great idea Pierre.  Unfortunately I can't seem to get the directory
added due to some smart gcc programmers.  If I try to add a directory
that is not already added, it will work.  If I try to add
/usr/include, it complains that this directory already exists and
refuses to add it.  I still have some hacking to do on this, but I
wanted to get this email off to you before I try to break things.
>
> Now, to see where the error comes from, you can look at the logs from
> jhalfs (/jhalfs/logs in the booted system). Especially, it'd be
> interesting to know what is the output of the sanity check at the end
> of the gcc log.
I will look at this log file in detail in a bit.  I wanted to get you
the output you were interested in, but I'm not too sure what sanity
check you're referring to.  The last few lines are
[...]
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../lib/crti.o succeeded
/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/../../../../lib/crtn.o succeeded
#include <...> search starts here:
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include
 /usr/local/include
 /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed
 /usr/include
SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64")
SEARCH_DIR("/usr/local/lib64")
SEARCH_DIR("/lib64")
SEARCH_DIR("/usr/lib64")
SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib")
SEARCH_DIR("/usr/local/lib")
SEARCH_DIR("/lib")
SEARCH_DIR("/usr/lib");
attempt to open /lib/libc.so.6 succeeded
found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2
removed 'dummy.c'
removed 'a.out'
removed 'dummy.log'


Totalseconds: 2878

KB: 8880464     /

>
> Pierre
>
> --
> http://lists.linuxfromscratch.org/listinfo/blfs-support
> FAQ: http://www.linuxfromscratch.org/blfs/faq.html
> Unsubscribe: See the above information page

Thanks for your help Pierre.  I am going to try to ...
1) copy /usr/include to /tmp
2) add /tmp to the directory search path via -idirafter
3) rebuild gcc

Hope this works.

Chris
-- 
http://lists.linuxfromscratch.org/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to