cygwin cross compiler expects DOS paths for include directories, etc.
Mon Jan 19 04:16:00 GMT 2004
Thanks Dan for the info. I've ran the command using the --verbose option,
and its definitely searching DOS paths to find include files/etc.
Where is this information set inside the gcc compilation?? I thought that
cygwin would handle paths at the "last stage" before opening the file,
rather than GCC being compiled in a set of DOS paths as its search
locations?? Any ideas??
Could I remove the DOS_SEPERATOR define inside the config/xx-cygwin32
files?? I dont understand that gcc is using dos pathname seperators
$ arm-epoc-pe-g++ dialog.cpp -I/opt/symbian/UIQ_21/include --verbose
Reading specs from
gcc version 2.9-psion-98r2 (Symbian build 546)
pp.exe -lang-c++ -v -I/opt/symbian/UIQ_21/include -iprefix
-undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=9 -Darm -D__
pe__ -D__declspec(x)=__attribute__((x)) -D__arm__ -D__pe__ -D__declspec(x)=_
_attribute__((x)) -D__arm -Acpu(arm) -Amachine(arm) -D__EXCEPTIONS -D__CHAR_
UNSIGNED__ -D__ARM_ARCH_4T__ -D__APCS_32__ dialog.cpp
GNU CPP version 2.9-psion-98r2 (Symbian build 546) (ARM/EPOC/PE)
#include "..." search starts here:
#include <...> search starts here:
End of search list.
In file included from dialog.cpp:1:
dialog.h:3: eikdialg.h: No such file or directory
dialog.cpp:6: eikchlst.h: No such file or directory
I can always "hack" the specs file to include the DOS path directory to the
Symbian SDK includes, but this is not cross-platform when I try and compile
using the same makefile under Linux.
From: Dan Kegel [mailto:email@example.com]
Sent: Monday, January 19, 2004 4:50 PM
Subject: Re: cygwin cross compiler expects DOS paths for include
Ben Bodley wrote:
> $ arm-epoc-pe-g++ dialog.cpp -I/opt/symbian/UIQ_21/include
> In file included from dialog.cpp:1:
> dialog.h:3: No include path in which to find eikdialg.h
> dialog.cpp:6: No include path in which to find eikchlst.h
> However, if I use DOS pathnames in my include directory:
> $ arm-epoc-pe-g++ dialog.cpp -Ic:/cygwin/opt/symbian/UIQ_21/include
> In file included from c:\cygwin\opt\symbian\UIQ_21\include\e32std.h:1305,
> from c:\cygwin\opt\symbian\UIQ_21\include\coeccntx.h:10,
> from c:\cygwin\opt\symbian\UIQ_21\include\eikdialg.h:10,
> from dialog.h:3,
> from dialog.cpp:1:
> c:\cygwin\opt\symbian\UIQ_21\include\e32des16.h:301: #error no typedef for
That's a puzzle, isn't it?
I usually solve icky problems like this by doing things like running g++
the --verbose flag to see what it's doing in more detail
and/or by running it under strace -o foo.log
and then doing
grep -i eikdialg.h foo.log
to see what happened when it tried to open the file.
You might also check the case of the filename and the permissions on the
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to firstname.lastname@example.org
More information about the crossgcc