public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
* Include paths for cpp/g++ (gcc 4.3.0)
@ 2008-05-05  8:11 Jonas Karlsson
  2008-05-06 14:19 ` Tim Prince
  0 siblings, 1 reply; 3+ messages in thread
From: Jonas Karlsson @ 2008-05-05  8:11 UTC (permalink / raw)
  To: gcc-help

Hello,
123456789012345678901234567890123456789012345678901234567890123456
I have problem building cpp with my installation of gcc 4.3.0, which I
built from
source. The specific problem in this case is that it can't find the system
wctype.h, but I don't know if it applies to other system header files.
This is using GoboLinux, so paths may differ from "normal" systems, but files
should be available where expected.
Header files is found in /System/Links/Headers (as symbolic links) and
wctype.h (the file g++ can't find) is located there:
$ls -l /System/Links/Headers/wctype.h
lrwxrwxrwx 1 gobo gobo 44 May  5 03:35 /System/Links/Headers/wctype.h ->
../../../Programs/Glibc/2.8/include/wctype.h
$ls -l /Programs/Glibc/2.8/include/wctype.h
-rw-r--r-- 1 1000 100 11208 May  3 13:02 /Programs/Glibc/2.8/include/wctype.h
CPLUS_INCLUDE_PATH is set to /System/Links/Headers.

Also /usr/include is a symlink to /System/Links/Headers, so if any binary uses
that as absolute path it should find the files. This is applied to /include and
/usr/local/include as well. Though this shouldn't matter as g++ searches
/System/Links/Headers, as can be seen below. To workaround reading
symlinks I also tried the below compilation with
'-I/Programs/Glibc/2.8/include',
which had no more effect than adding it to the top of <...> include search
paths, but still I got the same error.

What is wrong with my install?

$cat something.cpp
#include <cwctype>
$g++ -v -c something.cpp
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /Files/Compile/Sources/gcc-4.3.0/./configure
--prefix=/Programs/GCC/4.3.0 --sysconfdir=/Programs/GCC/Settings
--localstatedir=/System/Variable --enable-shared
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
--enable-languages=c,c++
Thread model: posix
gcc version 4.3.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-c' '-shared-libgcc' '-mtune=generic'
 /Programs/GCC/Current/lib/gcc/../../libexec/gcc/i686-pc-linux-gnu/4.3.0/cc1plus
-quiet -v -iprefix
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/ -D_GNU_SOURCE
something.cpp -quiet -dumpbase something.cpp -mtune=generic -auxbase
something -version -o /tmp/ccSRJghe.s
ignoring nonexistent directory
"/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../i686-pc-linux-gnu/include"
ignoring duplicate directory
"/Programs/GCC/Current/lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0"
ignoring duplicate directory
"/Programs/GCC/Current/lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/i686-pc-linux-gnu"
ignoring duplicate directory
"/Programs/GCC/Current/lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/backward"
ignoring duplicate directory "/usr/local/include"
ignoring duplicate directory
"/Programs/GCC/Current/lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/include"
ignoring duplicate directory
"/Programs/GCC/Current/lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/include-fixed"
ignoring nonexistent directory
"/Programs/GCC/Current/lib/gcc/../../lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../i686-pc-linux-gnu/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /System/Links/Headers
 /Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0
 /Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/i686-pc-linux-gnu
 /Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/backward
 /Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/include
 /Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/include-fixed
 /Programs/GCC/Current/lib/gcc/../../include
End of search list.
GNU C++ (GCC) version 4.3.0 (i686-pc-linux-gnu)
        compiled by GNU C version 4.3.0, GMP version 4.2.2, MPFR version 2.3.1.
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128941
Compiler executable checksum: 9e6a2619db6686469cb158722d901958
In file included from something.cpp:1:
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:51:25:
error: wctype.h: No such file or directory
In file included from something.cpp:1:
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:83:
error: '::wctrans_t' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:84:
error: '::wctype_t' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:85:
error: '::wint_t' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:87:
error: '::iswalnum' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:88:
error: '::iswalpha' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:90:
error: '::iswblank' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:92:
error: '::iswcntrl' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:93:
error: '::iswctype' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:94:
error: '::iswdigit' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:95:
error: '::iswgraph' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:96:
error: '::iswlower' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:97:
error: '::iswprint' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:98:
error: '::iswpunct' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:99:
error: '::iswspace' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:100:
error: '::iswupper' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:101:
error: '::iswxdigit' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:102:
error: '::towctrans' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:103:
error: '::towlower' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:104:
error: '::towupper' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:105:
error: '::wctrans' has not been declared
/Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:106:
error: '::wctype' has not been declared

-- 
/Jonas Karlsson

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Include paths for cpp/g++ (gcc 4.3.0)
  2008-05-05  8:11 Include paths for cpp/g++ (gcc 4.3.0) Jonas Karlsson
@ 2008-05-06 14:19 ` Tim Prince
  2008-09-07 18:09   ` Jonas Karlsson
  0 siblings, 1 reply; 3+ messages in thread
From: Tim Prince @ 2008-05-06 14:19 UTC (permalink / raw)
  To: Jonas Karlsson; +Cc: gcc-help

Jonas Karlsson wrote:

> I have problem building cpp with my installation of gcc 4.3.0, which I
> built from
> source. The specific problem in this case is that it can't find the system
> wctype.h, but I don't know if it applies to other system header files.
> This is using GoboLinux, so paths may differ from "normal" systems, but files
> should be available where expected.
> Header files is found in /System/Links/Headers (as symbolic links) and
> wctype.h (the file g++ can't find) is located there:
> $ls -l /System/Links/Headers/wctype.h

> $cat something.cpp
> #include <cwctype>

> In file included from something.cpp:1:
> /Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:51:25:
> error: wctype.h: No such file or directory

You're telling g++ to look for header files only in its own system include 
paths.  It's set up this way to allow multiple compilers to coexist.  If 
you have headers which work with g++, put them in the paths where you have 
configured your g++ to search for them.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Include paths for cpp/g++ (gcc 4.3.0)
  2008-05-06 14:19 ` Tim Prince
@ 2008-09-07 18:09   ` Jonas Karlsson
  0 siblings, 0 replies; 3+ messages in thread
From: Jonas Karlsson @ 2008-09-07 18:09 UTC (permalink / raw)
  To: gcc-help; +Cc: Tim Prince

2008/5/6 Tim Prince <tprince@myrealbox.com>:
> Jonas Karlsson wrote:
>
>> I have problem building cpp with my installation of gcc 4.3.0, which I
>> built from
>> source. The specific problem in this case is that it can't find the system
>> wctype.h, but I don't know if it applies to other system header files.
>> This is using GoboLinux, so paths may differ from "normal" systems, but
>> files
>> should be available where expected.
>> Header files is found in /System/Links/Headers (as symbolic links) and
>> wctype.h (the file g++ can't find) is located there:
>> $ls -l /System/Links/Headers/wctype.h
>
>> $cat something.cpp
>> #include <cwctype>
>
>> In file included from something.cpp:1:
>>
>> /Programs/GCC/Current/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/cwctype:51:25:
>> error: wctype.h: No such file or directory
>
> You're telling g++ to look for header files only in its own system include
> paths.  It's set up this way to allow multiple compilers to coexist.  If you
> have headers which work with g++, put them in the paths where you have
> configured your g++ to search for them.
>
As I got a question off-list as to if I got this issue solved. So mail
this is to add the solution to the archives.
The reason for the issue was a combination of CPLUS_INCLUDE_PATH, g++
removing search paths and the new "#include_next wctype.h" (instead of
just "#include wctype.h" earlier).

g++ adds paths in CPLUS_INCLUDE_PATH before any of the built in search
paths. That, in combination of g++ removing duplicate paths resulted
in the path with the c headers was the first path in the search path
list. When the c++ header was found in a later path, the macro was
"include_next" and no c header paths were left in the list the c
header could not be found which resulted in the above error. With
earlier releases of GCC the macro was just "#include wctype.h", which
worked fine with CPLUS_INCLUDE_PATH set to something that evicted
later c include paths.

Hope that makes some sense and thanks for the help.

-- 
/Jonas

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-09-07 18:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-05  8:11 Include paths for cpp/g++ (gcc 4.3.0) Jonas Karlsson
2008-05-06 14:19 ` Tim Prince
2008-09-07 18:09   ` Jonas Karlsson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).