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