[Bug libstdc++/70129] [6 Regression] stdlib.h: No such file or directory when using -isystem /usr/include
chuck at ece dot cmu.edu
gcc-bugzilla@gcc.gnu.org
Tue Oct 31 18:33:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129
chuck cranor <chuck at ece dot cmu.edu> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |chuck at ece dot cmu.edu
--- Comment #3 from chuck cranor <chuck at ece dot cmu.edu> ---
If the only difference between "-isystem" and "-I" was the change in the
handling of warnings, the #include_next of stdlib.h in libstdc++ would not be
a problem.
The real problem here is that "-isystem /usr/include" changes the include
search path in a way that is incompatible with "-I /usr/include" e.g.
% cat try.cc
#include <cstdlib>
% g++ -c try.cc
% g++ -I /usr/include -c try.cc
% g++ -isystem /usr/include -c try.cc
In file included from try.cc:1:0:
/proj/testbed/data/travis/cache/gcc/include/c++/6.2.0/cstdlib:75:25: fatal
error: stdlib.h: No such file or directory
#include_next <stdlib.h>
^
compilation terminated.
%
I think you'll find most build systems that do "-isystem /usr/include"
instead of "-I /usr/include" are only using "-isystem" for the change
in the warning behavior. The change in the include path order is not
wanted...
More information about the Gcc-bugs
mailing list