<div dir="ltr">I build with <span style="font-size:12.8px">--gcc-toolchain set to directory with gcc8 installation and it works well for me.</span></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 28, 2017 at 1:27 AM, Csaba Raduly via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
After building and installing GCC trunk (GCC 8), clang doesn't find<br>
the Standard C++ Library any more:<br>
<br>
/tmp$ cat > strm.cpp<br>
#include <iostream><br>
^D<br>
<br>
/tmp$ /usr/local/bin/clang++ -v strm.cpp<br>
clang version 6.0.0 (trunk 319018)<br>
Target: x86_64-unknown-linux-gnu<br>
Thread model: posix<br>
InstalledDir: /usr/local/bin<br>
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/<wbr>4.8<br>
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/<wbr>4.8.5<br>
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/<wbr>7<br>
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0<br>
Found candidate GCC installation:<br>
/usr/local/bin/../lib/gcc/x86_<wbr>64-pc-linux-gnu/8.0.0<br>
Selected GCC installation: /usr/local/bin/../lib/gcc/x86_<wbr>64-pc-linux-gnu/8.0.0<br>
Candidate multilib: .;@m64<br>
Candidate multilib: 32;@m32<br>
Selected multilib: .;@m64<br>
 "/usr/local/bin/clang-6.0" -cc1 -triple x86_64-unknown-linux-gnu<br>
-emit-obj -mrelax-all -disable-free -main-file-name strm.cpp<br>
-mrelocation-model static -mthread-model posix -mdisable-fp-elim<br>
-fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables<br>
-fuse-init-array -target-cpu x86-64 -dwarf-column-info<br>
-debugger-tuning=gdb -v -resource-dir /usr/local/lib/clang/6.0.0<br>
-internal-isystem /usr/local/include -internal-isystem<br>
/usr/local/lib/clang/6.0.0/<wbr>include -internal-externc-isystem<br>
/usr/include/x86_64-linux-gnu -internal-externc-isystem /include<br>
-internal-externc-isystem /usr/include -fdeprecated-macro<br>
-fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 271<br>
-fobjc-runtime=gcc -fcxx-exceptions -fexceptions<br>
-fdiagnostics-show-option -fcolor-diagnostics -o /tmp/strm-ba92aa.o -x<br>
c++ strm.cpp<br>
clang -cc1 version 6.0.0 based upon LLVM 6.0.0svn default target<br>
x86_64-unknown-linux-gnu<br>
ignoring nonexistent directory "/include"<br>
#include "..." search starts here:<br>
#include <...> search starts here:<br>
 /usr/local/include<br>
 /usr/local/lib/clang/6.0.0/<wbr>include<br>
 /usr/include/x86_64-linux-gnu<br>
 /usr/include<br>
End of search list.<br>
strm.cpp:1:10: fatal error: 'iostream' file not found<br>
#include <iostream><br>
         ^~~~~~~~~~<br>
<br>
For some reason, GCC8's include directories are not used, despite<br>
"Selected GCC installation:<br>
/usr/local/bin/../lib/gcc/x86_<wbr>64-pc-linux-gnu/8.0.0". Not even<br>
``ignoring nonexistent directory`` is printed (unless the ``ignoring<br>
nonexistent directory "/include" `` was clang's attempt to use the<br>
GCC8 installation).<br>
<br>
$ find /usr/local/lib/gcc/x86_64-pc-<wbr>linux-gnu/8.0.0/ -name iostream<br>
/usr/local/lib/gcc/x86_64-pc-<wbr>linux-gnu/8.0.0/include/c++/<wbr>iostream<br>
<br>
<br>
If I hide /usr/local/lib/gcc/x86_64-pc-<wbr>linux-gnu/8.0.0 (to simulate<br>
the state before I built and installed GCC 8), then it works:<br>
<br>
/tmp$ /usr/local/bin/clang++ -v strm.cpp<br>
clang version 6.0.0 (trunk 319018)<br>
Target: x86_64-unknown-linux-gnu<br>
Thread model: posix<br>
InstalledDir: /usr/local/bin<br>
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/<wbr>4.8<br>
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/<wbr>4.8.5<br>
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/<wbr>7<br>
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0<br>
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0<br>
Candidate multilib: .;@m64<br>
Candidate multilib: 32;@m32<br>
Candidate multilib: x32;@mx32<br>
Selected multilib: .;@m64<br>
 "/usr/local/bin/clang-6.0" -cc1 -triple x86_64-unknown-linux-gnu<br>
-emit-obj -mrelax-all -disable-free -main-file-name strm.cpp<br>
-mrelocation-model static -mthread-model posix -mdisable-fp-elim<br>
-fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables<br>
-fuse-init-array -target-cpu x86-64 -dwarf-column-info<br>
-debugger-tuning=gdb -v -resource-dir /usr/local/lib/clang/6.0.0<br>
-internal-isystem<br>
/usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0/../../../../include/c++/<wbr>7.2.0<br>
-internal-isystem<br>
/usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0/../../../../include/x86_<wbr>64-linux-gnu/c++/7.2.0<br>
-internal-isystem<br>
/usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0/../../../../include/x86_<wbr>64-linux-gnu/c++/7.2.0<br>
-internal-isystem<br>
/usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0/../../../../include/c++/<wbr>7.2.0/backward<br>
-internal-isystem /usr/local/include -internal-isystem<br>
/usr/local/lib/clang/6.0.0/<wbr>include -internal-externc-isystem<br>
/usr/include/x86_64-linux-gnu -internal-externc-isystem /include<br>
-internal-externc-isystem /usr/include -fdeprecated-macro<br>
-fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 271<br>
-fobjc-runtime=gcc -fcxx-exceptions -fexceptions<br>
-fdiagnostics-show-option -fcolor-diagnostics -o /tmp/strm-c79a25.o -x<br>
c++ strm.cpp<br>
clang -cc1 version 6.0.0 based upon LLVM 6.0.0svn default target<br>
x86_64-unknown-linux-gnu<br>
ignoring nonexistent directory "/include"<br>
ignoring duplicate directory<br>
"/usr/lib/gcc/x86_64-linux-<wbr>gnu/7.2.0/../../../../include/<wbr>x86_64-linux-gnu/c++/7.2.0"<br>
#include "..." search starts here:<br>
#include <...> search starts here:<br>
 /usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0/../../../../include/c++/<wbr>7.2.0<br>
 /usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0/../../../../include/x86_<wbr>64-linux-gnu/c++/7.2.0<br>
 /usr/lib/gcc/x86_64-linux-gnu/<wbr>7.2.0/../../../../include/c++/<wbr>7.2.0/backward<br>
 /usr/local/include<br>
 /usr/local/lib/clang/6.0.0/<wbr>include<br>
 /usr/include/x86_64-linux-gnu<br>
 /usr/include<br>
End of search list.<br>
(success)<br>
<br>
<br>
I tried passing --gcc-toolchain set to the directory selected in the<br>
absence of GCC 8, but it didn't work. The only effect seems to be to<br>
stop searching for GCC installations :<br>
<br>
/tmp$ /usr/local/bin/clang++<br>
--gcc-toolchain=/usr/lib/gcc/<wbr>x86_64-linux-gnu/7.2.0 -v strm.cpp<br>
clang version 6.0.0 (trunk 319018)<br>
Target: x86_64-unknown-linux-gnu<br>
Thread model: posix<br>
InstalledDir: /usr/local/bin<br>
 "/usr/local/bin/clang-6.0" -cc1 -triple x86_64-unknown-linux-gnu<br>
-emit-obj -mrelax-all -disable-free -main-file-name strm.cpp<br>
-mrelocation-model static -mthread-model posix -mdisable-fp-elim<br>
-fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables<br>
-fuse-init-array -target-cpu x86-64 -dwarf-column-info<br>
-debugger-tuning=gdb -v -resource-dir /usr/local/lib/clang/6.0.0<br>
-internal-isystem /usr/local/include -internal-isystem<br>
/usr/local/lib/clang/6.0.0/<wbr>include -internal-externc-isystem<br>
/usr/include/x86_64-linux-gnu -internal-externc-isystem /include<br>
-internal-externc-isystem /usr/include -fdeprecated-macro<br>
-fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 271<br>
-fobjc-runtime=gcc -fcxx-exceptions -fexceptions<br>
-fdiagnostics-show-option -fcolor-diagnostics -o /tmp/strm-241a36.o -x<br>
c++ strm.cpp<br>
clang -cc1 version 6.0.0 based upon LLVM 6.0.0svn default target<br>
x86_64-unknown-linux-gnu<br>
ignoring nonexistent directory "/include"<br>
#include "..." search starts here:<br>
#include <...> search starts here:<br>
 /usr/local/include<br>
 /usr/local/lib/clang/6.0.0/<wbr>include<br>
 /usr/include/x86_64-linux-gnu<br>
 /usr/include<br>
End of search list.<br>
strm.cpp:1:10: fatal error: 'iostream' file not found<br>
#include <iostream><br>
         ^~~~~~~~~~<br>
<br>
<br>
This is an Ubuntu 17.10 machine whose system compiler is GCC 7.2:<br>
<br>
/tmp$ g++ -v<br>
Using built-in specs.<br>
COLLECT_GCC=g++<br>
COLLECT_LTO_WRAPPER=/usr/lib/<wbr>gcc/x86_64-linux-gnu/7/lto-<wbr>wrapper<br>
OFFLOAD_TARGET_NAMES=nvptx-<wbr>none<br>
OFFLOAD_TARGET_DEFAULT=1<br>
Target: x86_64-linux-gnu<br>
Configured with: ../src/configure -v --with-pkgversion='Ubuntu<br>
7.2.0-8ubuntu3' --with-bugurl=file:///usr/<wbr>share/doc/gcc-7/README.Bugs<br>
--enable-languages=c,ada,c++,<wbr>go,brig,d,fortran,objc,obj-c++<br>
--prefix=/usr --with-gcc-major-version-only --program-suffix=-7<br>
--program-prefix=x86_64-linux-<wbr>gnu- --enable-shared<br>
--enable-linker-build-id --libexecdir=/usr/lib<br>
--without-included-gettext --enable-threads=posix --libdir=/usr/lib<br>
--enable-nls --with-sysroot=/ --enable-clocale=gnu<br>
--enable-libstdcxx-debug --enable-libstdcxx-time=yes<br>
--with-default-libstdcxx-abi=<wbr>new --enable-gnu-unique-object<br>
--disable-vtable-verify --enable-libmpx --enable-plugin<br>
--enable-default-pie --with-system-zlib --with-target-system-zlib<br>
--enable-objc-gc=auto --enable-multiarch --disable-werror<br>
--with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,<wbr>mx32<br>
--enable-multilib --with-tune=generic<br>
--enable-offload-targets=<wbr>nvptx-none --without-cuda-driver<br>
--enable-checking=release --build=x86_64-linux-gnu<br>
--host=x86_64-linux-gnu --target=x86_64-linux-gnu<br>
Thread model: posix<br>
gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3)<br>
<br>
<br>
This is how GCC 8 was configured:<br>
<br>
/tmp$ g++-8 -v<br>
Using built-in specs.<br>
COLLECT_GCC=g++-8<br>
COLLECT_LTO_WRAPPER=/usr/<wbr>local/libexec/gcc/x86_64-pc-<wbr>linux-gnu/8.0.0/lto-wrapper<br>
Target: x86_64-pc-linux-gnu<br>
Configured with: ../trunk/configure --program-suffix=-8<br>
--enable-version-specific-<wbr>runtime-libs --enable-languages=c,c++,lto :<br>
(reconfigured) ../trunk/configure --program-suffix=-8<br>
--enable-version-specific-<wbr>runtime-libs --enable-languages=c,c++,lto<br>
Thread model: posix<br>
gcc version 8.0.0 20171124 (experimental) (GCC)<br>
<br>
Any ideas?<br>
<span class="HOEnZb"><font color="#888888"><br>
Csaba<br>
--<br>
GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++<br>
The Tao of math: The numbers you can count are not the real numbers.<br>
Life is complex, with real and imaginary parts.<br>
"Ok, it boots. Which means it must be bug-free and perfect. " -- Linus Torvalds<br>
"People disagree with me. I just ignore them." -- Linus Torvalds<br>
______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
</font></span></blockquote></div><br></div>