Strange behavior when building
Joel Sherrill <joel@OARcorp.com>
joel.sherrill at OARcorp.com
Tue Dec 20 15:09:54 UTC 2005
Fabrício de Novaes Kucinskis wrote:
> Hello,
>
>
> I'm starting to develop some simple applications with RTEMS to an ERC32 BSP.
> The last one has some .c files and only one header, which I #included in all
> source files (in a way similar to some of the RTEMS examples).
>
> Sometimes when trying to build, I got a "multiple definition" error. This is
> not related to any specific change I made - I can change, for example, the
> text in a printf call and the error can happen.
>
> When the error happens, to build my application, I have to:
>
> 1. execute a "make clean"
> 2. comment the "confdefs.h" include
> 3. execute make (different errors will happen, because there's no confdefs
> inclusion)
> 4. decomment the "confdefs.h" and
> 5. execute make again (this time it'll work)
>
> If I change the includes over the source files (including bsp.h, stdio.h and
> stdlib.h in each one) the problem stops. But I want to understand why this
> is happening, and I would like to avoid including the same set of headers in
> each file.
>
> There is a snippet of the header:
>
> #ifndef CONFIG_H_ //guard
> #define CONFIG_H_
>
> #include <bsp.h>
> #include <stdio.h>
> #include <stdlib.h>
>
> //Prototypes
> rtems_task Interface[...]
> rtems_timer_service_routine Timer[...]
> boolean VerifyStatus[...]
>
> //RTEMS configuration
> #define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
> [...]
>
> #define CONFIGURE_INIT
> #include <confdefs.h> //this is the line I have to comment when the error
Defining CONFIGURE_INIT actually instantiates data tables. So it can
only happen in one C file. If you look at the tests and samples, they
are careful to define CONFIGURE_INIT in a single file (usually init.c)
and then everything is OK. Otherwise, you get multiple definitions of
data objects.
I think this is what you are describing -- either no configuration table
or multiple definitions -- one per file the .h with CONFIGURE_INIT is
defined in.
> #endif /*CONFIG_H_*/
>
>
> Any comment will be very appreciated.
> Thank you in advance,
>
>
> Fabrício de Novaes Kucinskis - DEA / INPE
> -----------------------------------------
> Divisão de Eletrônica Aeroespacial
> Instituto Nacional de Pesquisas Espaciais
>
--
Joel Sherrill, Ph.D. Director of Research & Development
joel at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the users
mailing list