multiple definition errors while building PIC24 based project

themadmstrmnd wrote on Thursday, February 11, 2016:

I am getting multiple definition errors while building a project for a PIC24 platform. The functions the compiler is erroring on is found in list.c. I can’t think why this is happening. list.h is of course protected from the ifndef LIST_H. The FreeRTOS files have not been modified.

I am using version 8.2.3

rtos/list.c:80: multiple definition of _vListInitialise' build/default/production/rtos/list.o(.text+0x0):rtos/list.c:80: first defined here build/default/production/rtos/list.o(.text+0x36): In function vListInitialiseItem’:
rtos/list.c:105: multiple definition of _vListInitialiseItem' build/default/production/rtos/list.o(.text+0x36):rtos/list.c:105: first defined here build/default/production/rtos/list.o(.text+0x44): In function vListInsertEnd’:
rtos/list.c:117: multiple definition of _vListInsertEnd' build/default/production/rtos/list.o(.text+0x44):rtos/list.c:117: first defined here build/default/production/rtos/list.o(.text+0x80): In function vListInsert’:
rtos/list.c:146: multiple definition of _vListInsert' build/default/production/rtos/list.o(.text+0x80):rtos/list.c:146: first defined here build/default/production/rtos/list.o(.text+0xf2): In function uxListRemove’:
rtos/list.c:213: multiple definition of `_uxListRemove’
build/default/production/rtos/list.o(.text+0xf2):rtos/list.c:213: first defined here
c:\program files (x86)\microchip\xc16\v1.23\bin\bin…\bin/elf-ld.exe: Link terminated due to previous error(s).
make[2]: *** [dist/default/production/coreModule.X.production.hex] Error 255
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

heinbali01 wrote on Thursday, February 11, 2016:

Hi Nick,

Are you sure you didn’t include the list.o module two times?

Can you check the complete command that is issued for linking?

I think it’s got nothing to do with the header file list.h: those are only function prototypes like this one:

    void vListInitialise( List_t * const pxList ) PRIVILEGED_FUNCTION;

Did you define PRIVILEGED_FUNCTION somehow?