[sane-devel] sane-config --cflags output
Sergey Vlasov
vsu at mivlgu.murom.ru
Tue Feb 12 11:57:50 GMT 2002
On Mon, Feb 11, 2002 at 20:47:56 +0100, Henning Meier-Geinitz wrote:
> On Mon, Feb 11, 2002 at 09:44:36AM +0000, Tim Waugh wrote:
> > sane-config --cflags shouldn't say '-I/usr/include', since that's the
> > default include path anyway; similarly, sane-config --libs shouldn't
> > say '-lc' (and it doesn't).
>
> Can we really assume that /usr/include is included on each and every
> platform? Is it in the C-standard or similar text?
>
> What is the problem with explicitely mentioning "/usr/include"? Does
> it break anything or makes it much slower?
Info: (gcc.info)Interoperation:
* Use of `-I/usr/include' may cause trouble.
Many systems come with header files that won't work with GCC unless
corrected by `fixincludes'. The corrected header files go in a new
directory; GCC searches this directory before `/usr/include'. If
you use `-I/usr/include', this tells GCC to search `/usr/include'
earlier on, before the corrected headers. The result is that you
get the uncorrected header files.
Instead, you should use these options (when compiling C programs):
-I/usr/local/lib/gcc-lib/TARGET/VERSION/include -I/usr/include
For C++ programs, GCC also uses a special directory that defines
C++ interfaces to standard C subroutines. This directory is meant
to be searched *before* other standard include directories, so
that it takes precedence. If you are compiling C++ programs and
specifying include directories explicitly, use this option first,
then the two options above:
-I/usr/local/lib/g++-include
May be `fixincludes' is only a concern on older systems. But there is a
problem with C++ <complex.h> - it is different from the C one in
/usr/include, so adding -I/usr/include might break a C++ frontend which
uses complex numbers.
Also, -I/usr/include may interfere with user-specified include paths -
sometimes you may want to compile a program with a library version
different from the one installed in /usr, and with -I/usr/include the
system-installed headers may be picked up anyway. Same problem with
-L/usr/lib.
More information about the sane-devel
mailing list