This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: C Preprocessor: Expected Declaration Specifiers


Michael,
 I am compiling user code.  I did have kernel code, but I compiled
that separately and with no problems.  Surprisingly, the user code is
what is giving me problems!

Ryan

On 2/4/07, Michael Eager <eager@eagercon.com> wrote:
Are you trying to compile parts of Linux or a driver?
If so, you should be using "make bzImage" or something
similar, rather than trying to compile outside of the
kernel framework.  The makefile will add all of the
appropriate include directories.

Ryan Slominski wrote:
> Michael,
>  Thanks for you response.  I used the -E -dD switch on both the
> Ubuntu and Debian distribution to compare.  On the Debian the macro is
> being expanded as expected.  On the Ubuntu the macro doesn't get
> expanded at all.
>  My understanding is that gcc first looks under /usr/local/include
> and then /usr/include for header files.  On the Debian the macro
> definition is defined under /usr/include as expected.  On the Ubuntu
> it is not defined in either place.  However, when I built the new
> kernel I also built the new header files (which do include the macro
> definitions).  I can invoke the compiler with the include path as:
>
> gcc -I /usr/src/linux-headers-2.6.19.2-research/include msg_client.c
> -o msg_client
>
> and I still get the same error message.  When I use the -I -E -dD
> switches together I notice the output file contains the kernel
> #defines as expected.
>  I still cannot determine why the macro doesn't expand even though it
> appears to have access to the definition.  In the meantime, I have
> been able to use the syscall() function instead of the macro with
> success.
>
> Thanks for your time,
>
> Ryan
>
>>
>> It's difficult to tell what the real problem is when looking
>> at macros.  You need to look at the code after macros have
>> been expanded.
>>
>> Execute "gcc msg_client.c -E -dD -o msg_client.i" and take a
>> look at what the _syscall2 macro generates.
>>
>> --
>> Michael Eager    eager@eagercon.com
>> 1960 Park Blvd., Palo Alto, CA 94306  650-325-8077
>>
>


-- Michael Eager eager@eagercon.com 1960 Park Blvd., Palo Alto, CA 94306 650-325-8077



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]