Hi all,

I'm having trouble getting gcc to do pre-compiled headers. The instructions for doing it are at http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html.

Here's what I got:
precomp.h:
#ifndef PRECOMP_H
#define PRECOMP_H

//#error Include twice

#include <stdio.h>

#endif

hello.c:
#include "precomp.h"

int main()
{
        printf("Hello, world.\n");

        return 0;
}
Here's what I do:
$ gcc -x c -o precomp.h.gch -c precomp.h -g -Wall -O2
Uncomment the "error" line
$ gcc -x c -o hello.o -c hello.c -g -Wall -O2
In file included from hello.c:1:
precomp.h:4:2: error: #error Include twice

Now, here's the strange part, when I run the compile command through strace, strace shows:
20522 open("hello.gcda", O_RDWR) = -1 ENOENT (No such file or directory) 20522 stat64("precomp.h.gch", {st_mode=S_IFREG|0644, st_size=3056, ...}) = 0
20522 open("precomp.h.gch", O_RDONLY|O_NOCTTY) = 4
20522 fstat64(4, {st_mode=S_IFREG|0644, st_size=3056, ...}) = 0
20522 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\1\0\3\0\1\0\0\0"..., 24) = 24
20522 close(4)                          = 0
20522 open("precomp.h", O_RDONLY|O_NOCTTY) = 4
20522 fstat64(4, {st_mode=S_IFREG|0644, st_size=86, ...}) = 0
20522 read(4, "#ifndef PRECOMP_H\n#define PRECOMP"..., 86) = 86
20522 close(4)                          = 0
So, to recap:

   * My version of gcc DOES support precompiled headers.
   * I am placing the precompiled headers file at the right location
   * gcc DOES manage to find my precompiled header file when it
     searches for it
   * But it ignores it!

Now the gcc page does give a list of reasons why a precompiled header might be ignored, by my test case does not appear to cover any of those reasons. The header file is a simple one, no defines before the precompiled header, exact same command line to both header and body code, only one per file.

Anyone either understanding the man page or having an idea what I'm doing wrong is welcome to let me know.

Shachar

=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to