1

I am trying to build the following code on my computer but I run into a lot of errors. The error says that g_tagParams and g_loggerparams are multiply defined in many of the functions. But these two variables are only used in the following portions of the code -

Found 84 matches of g_tagparams in 7 files. 
Intf_Tag.h  
tag_parameters g_tagParams[TAG_POSITIONS_MAX];      [position 57:16]    
Intf_Config.c   
            g_tagParams[iTagPosition - 1].u16TxPower = wValue;      [position 413:13]   
Inft_History.c  
                g_tagParams[TAG_POSITION_1 - 1].u16TxPower = 1000;      [position 141:17]   
                g_tagParams[TAG_POSITION_2 - 1].u16TxPower = 1000;      [position 142:17]   
                g_tagParams[TAG_POSITION_3 - 1].u16TxPower = 1000;      [position 143:17]   
        u64RecordBufferIndex += sprintf(&chRecordBuf[u64RecordBufferIndex], "%1i,", (int)(g_tagParams[iTagPosition - 1].u8TagPosition));      [position 356:91] 
        if(1000 == g_tagParams[iTagPosition - 1].dTemperature)      [position 358:20]   
            u64RecordBufferIndex += sprintf(&chRecordBuf[u64RecordBufferIndex], "%2.1f,", (float)g_tagParams[iTagPosition - 1].dTemperature);                          [position 364:98]    
        if(0 == g_tagParams[iTagPosition - 1].chEPC[0])      [position 367:17]  
                u64RecordBufferIndex += sprintf(&chRecordBuf[u64RecordBufferIndex], "%c" ,g_tagParams[iTagPosition - 1].chEPC[iEPC]);      [position 376:91]    
            u64RecordBufferIndex += sprintf(&chRecordBuf[u64RecordBufferIndex], "%c," ,g_tagParams[iTagPosition - 1].chEPC[iEPC]);      [position 378:88]   
Intf_Tag.c  
        g_tagParams[iTagPos - 1].u8TagPosition = iTagPos;      [position 45:9]  
        g_tagParams[iTagPos - 1].u16InventoryTime_ms = TAG_DEFAULT_INVENTORY_TIME;      [position 46:9] 
        g_tagParams[iTagPos - 1].u16TxPower = TAG_DEFAULT_READ_TX_POWER;      [position 47:9]   
        g_tagParams[iTagPos - 1].blNewReading = false;      [position 48:9] 
        g_tagParams[iTagPos - 1].u16PowerUpCount = 0;      [position 49:9]  
        g_tagParams[iTagPos - 1].u16Error = ERROR_NONE;      [position 50:9]    
        g_tagParams[iTagPos - 1].dTempMax = -1000.0;      [position 51:9]   
        g_tagParams[iTagPos - 1].dTempMin = 1000.0;      [position 52:9]    
    memset(&g_tagParams[iTagPosition - 1].chEPC[0], 0, 24);      [position 136:13]  
    g_tagParams[iTagPosition - 1].dTemperature = 1000;      [position 137:5]    
    u16Error = TagReadUserMemory(iTagPosition, ADDR_USER_MEM_LAST_TEMP, &u8UserMem[0], 2, &g_tagParams[iTagPosition - 1].chEPC[0], sizeof(g_tagParams[iTagPosition - 1].chEPC));      [position 141:92] 
    u16Error = TagReadUserMemory(iTagPosition, ADDR_USER_MEM_LAST_TEMP, &u8UserMem[0], 2, &g_tagParams[iTagPosition - 1].chEPC[0], sizeof(g_tagParams[iTagPosition - 1].chEPC));      [position 141:139]    
        u16Error = TagReadUserMemory(iTagPosition, ADDR_USER_MEM_LAST_TEMP, &u8UserMem[0], 2, &g_tagParams[iTagPosition - 1].chEPC[0], sizeof(g_tagParams[iTagPosition - 1].chEPC));      [position 144:96] 
        u16Error = TagReadUserMemory(iTagPosition, ADDR_USER_MEM_LAST_TEMP, &u8UserMem[0], 2, &g_tagParams[iTagPosition - 1].chEPC[0], sizeof(g_tagParams[iTagPosition - 1].chEPC));      [position 144:143]    
    switch(g_tagParams[iTagPosition - 1].u8TagPosition)      [position 147:12]  
    g_tagParams[iTagPosition - 1].blNewReading = true;      [position 163:5]    
        g_tagParams[iTagPosition - 1].u16Error = ERROR_TAG_READ_USER_MEM;      [position 167:9] 
    g_tagParams[iTagPosition - 1].u16RSSI = (uint16_t)g_u32RSSI;      [position 172:5]  
    if(u16PowerUpCount == g_tagParams[iTagPosition - 1].u16PowerUpCount)      [position 175:27] 
        g_tagParams[iTagPosition - 1].u16Error = ERROR_TAG_POWER_UP;      [position 178:9]  
    g_tagParams[iTagPosition - 1].u16PowerUpCount = u16PowerUpCount;      [position 183:5]  
    g_tagParams[iTagPosition - 1].u16RTDCounts = u16RTDCounts;      [position 196:5]    
    g_tagParams[iTagPosition - 1].u16Error = u16Error;      [position 198:5]    
    error = ipj_set_value(&iri_device, E_IPJ_KEY_ANTENNA_TX_POWER, g_tagParams[iTagPosition - 1].u16TxPower);      [position 213:65]    
    iError = ipj_util_perform_inventory(&iri_device, g_tagParams[TAG_POSITION_1 - 1].u16InventoryTime_ms);      [position 225:51]   
        if(g_tagParams[iTagPosition - 1].u16TxPower <= MAX_POLLING_TX_POWER)      [position 235:12] 
            g_tagParams[iTagPosition - 1].u16TxPower += 50;      [position 237:13]  
            error = ipj_set_value(&iri_device, E_IPJ_KEY_ANTENNA_TX_POWER, g_tagParams[iTagPosition - 1].u16TxPower);      [position 238:73]    
        iError = ipj_util_perform_inventory(&iri_device, g_tagParams[TAG_POSITION_1 - 1].u16InventoryTime_ms);      [position 241:52]   
        if(g_tagParams[iTagPosition - 1].u16TxPower > MAX_POLLING_TX_POWER)      [position 249:12]  
            g_tagParams[iTagPosition - 1].u16TxPower = MAX_POLLING_TX_POWER;      [position 251:13] 
    uint16_t u16TxPower = g_tagParams[iTagPosition - 1].u16TxPower;      [position 284:27]  
    uint16_t u16InventoryTime_ms = g_tagParams[iTagPosition - 1].u16InventoryTime_ms;      [position 285:36]    
    g_tagParams[iTagPosition - 1].u16TxPower = 1800; //jer - change to a #define      [position 287:5]  
    g_tagParams[iTagPosition - 1].u16InventoryTime_ms = 600;      [position 288:5]  
    error = ipj_set_value(&iri_device, E_IPJ_KEY_ANTENNA_TX_POWER, g_tagParams[iTagPosition - 1].u16TxPower);      [position 294:65]    
    iError = ipj_util_perform_inventory(&iri_device, g_tagParams[TAG_POSITION_1 - 1].u16InventoryTime_ms);      [position 314:51]   
        iError = ipj_util_perform_inventory(&iri_device, g_tagParams[TAG_POSITION_1 - 1].u16InventoryTime_ms);      [position 317:58]   
        g_tagParams[iTagPosition - 1].u16TxPower = u16TxPower;      [position 322:9]    
        g_tagParams[iTagPosition - 1].u16InventoryTime_ms = u16InventoryTime_ms;      [position 323:9]  
        iError = ipj_util_perform_inventory(&iri_device, g_tagParams[TAG_POSITION_1 - 1].u16InventoryTime_ms);      [position 330:52]   
            g_tagParams[iTagPosition - 1].u16TxPower = u16TxPower;      [position 334:13]   
            g_tagParams[iTagPosition - 1].u16InventoryTime_ms = u16InventoryTime_ms;      [position 335:13] 
    g_tagParams[iTagPosition - 1].u16TxPower = u16TxPower;      [position 341:5]    
    g_tagParams[iTagPosition - 1].u16InventoryTime_ms = u16InventoryTime_ms;      [position 342:5]  
    uint16_t u16TxPower = g_tagParams[iTagPosition - 1].u16TxPower;      [position 587:27]  
        error = ipj_util_perform_inventory(&iri_device, g_tagParams[TAG_POSITION_1 - 1].u16InventoryTime_ms);      [position 599:57]    
            error = ipj_util_perform_inventory(&iri_device, g_tagParams[TAG_POSITION_1 - 1].u16InventoryTime_ms);      [position 602:61]    
    api_u8TxDataBuffer[TX_BUF_POS_TAG_POS] = g_tagParams[iTagPosition - 1].u8TagPosition;      [position 660:46]    
    memcpy(&api_u8TxDataBuffer[TX_BUF_POS_EPC],g_tagParams[iTagPosition - 1].chEPC, TAG_EPC_MAX_CHARS);      [position 661:48]  
    float_to_buffer((float)g_tagParams[iTagPosition - 1].dTemperature, &api_u8TxDataBuffer[TX_BUF_POS_TEMPERATUER]);      [position 662:28] 
    float_to_buffer((float)(g_tagParams[iTagPosition - 1].dTempMax), &api_u8TxDataBuffer[TX_BUF_POS_TEMP_MAX]);      [position 663:29]  
    float_to_buffer((float)(g_tagParams[iTagPosition - 1].dTempMin), &api_u8TxDataBuffer[TX_BUF_POS_TEMP_MIN]);      [position 664:29]  
    memcpy(&api_u8TxDataBuffer[0],g_tagParams[iTagPosition - 1].chEPC, TAG_EPC_MAX_CHARS);      [position 686:35]   
    float_to_buffer((float)g_tagParams[iTagPosition - 1].dTemperature, &api_u8TxDataBuffer[0]);      [position 708:28]  
    float_to_buffer((float)g_tagParams[iTagPosition - 1].dTempMax, &api_u8TxDataBuffer[0]);      [position 730:28]  
    float_to_buffer((float)g_tagParams[iTagPosition - 1].dTempMin, &api_u8TxDataBuffer[0]);      [position 753:28]  
    u16TxPower = g_tagParams[iTagPosition - 1].u16TxPower;      [position 778:18]   
    g_tagParams[iTagPosition - 1].u16TxPower = u16TxPower;      [position 816:5]    
    double dTempMax = g_tagParams[iTagPosition - 1].dTempMax;      [position 971:23]    
    double dTempMin = g_tagParams[iTagPosition - 1].dTempMin;      [position 972:23]    
        g_tagParams[iTagPosition - 1].dTempMax = dTemperature;              [position 976:9]    
        g_tagParams[iTagPosition - 1].dTempMin = dTemperature;              [position 981:9]    
    g_tagParams[iTagPosition - 1].dTemperature = dTemperature;      [position 984:5]    
LoggerUI.c  
    if(g_tagParams[TAG_POSITION_1 - 1].blNewReading || g_tagParams[TAG_POSITION_2 - 1].blNewReading || g_tagParams[TAG_POSITION_3 - 1].blNewReading)      [position 572:8]  
    if(g_tagParams[TAG_POSITION_1 - 1].blNewReading || g_tagParams[TAG_POSITION_2 - 1].blNewReading || g_tagParams[TAG_POSITION_3 - 1].blNewReading)      [position 572:56] 
    if(g_tagParams[TAG_POSITION_1 - 1].blNewReading || g_tagParams[TAG_POSITION_2 - 1].blNewReading || g_tagParams[TAG_POSITION_3 - 1].blNewReading)      [position 572:104]    
            g_tagParams[iTagPos - 1].blNewReading = false;      [position 577:13]   
            if(ERROR_NONE == g_tagParams[iTagPos - 1].u16Error)      [position 580:30]  
                dTemperature = g_tagParams[iTagPos - 1].dTemperature;      [position 582:32]    
            AddHyphensToEPC(g_tagParams[iTagPos - 1].chEPC, chEPC);      [position 604:29]  
RS500.c 
    error = ipj_set_value(&iri_device, E_IPJ_KEY_ANTENNA_TX_POWER, (uint32_t)g_tagParams[TAG_POSITION_1 - 1].u16TxPower);      [position 222:75]    
SmartTagLogger.c    
tag_parameters g_tagParams[TAG_POSITIONS_MAX];      [position 74:16]

and in

Found 17 matches of g_loggerparams in 5 files.  
Intf_Logger.h   
logger_parameters g_loggerParams;      [position 45:19] 
Intf_Logger.c   
    g_loggerParams.dwPollingInterval_ms = (DWORD)LOGGER_DEFAULT_POLLING_INTERVAL_MS; //2 minutes 2 * 60 * 1000      [position 35:5] 
    g_loggerParams.wPowerClockFreqKHz = (WORD)LOGGER_DEFAULT_POWER_CLOCK_FREQ_KHZ;      [position 36:5] 
    g_loggerParams.fTempHighLimit = (float)LOGGER_DEFAULT_TEMP_HIGH_LIMIT;      [position 37:5] 
    g_loggerParams.u8PowerPulseWidth =  LOGGER_DEFAULT_POWER_PULSE_WIDTH;      [position 38:5]  
    GetAlarmTime(g_loggerParams.dwPollingInterval_ms / 1000, &stAlarmTime);      [position 61:18]   
        //ColdEndPowerControl(true, g_loggerParams.u8PowerPulseWidth);      [position 86:37]    
            dword_to_buffer(g_loggerParams.dwPollingInterval_ms, api_u8TxDataBuffer);      [position 241:29]    
            api_u8TxDataBuffer[0] = g_loggerParams.u8PowerPulseWidth;      [position 268:37]    
                g_loggerParams.u8PowerPulseWidth = u8PulseWidth;      [position 283:17] 
            g_loggerParams.dwPollingInterval_ms = dwInterval_ms;      [position 691:13] 
Intf_Config.c   
            g_loggerParams.dwPollingInterval_ms = dwValue;      [position 234:13]   
Intf_Tag.c  
    ColdEndPowerControl(blActivate, g_loggerParams.u8PowerPulseWidth);//jer - pulse width needs to be configurable      [position 840:37]   
    u16Error = ColdEndPowerControl(true, g_loggerParams.u8PowerPulseWidth);      [position 869:42]  
    u16Error = ColdEndPowerControl(false, g_loggerParams.u8PowerPulseWidth);      [position 876:43] 
    word_to_buffer((uint16_t)(g_loggerParams.dwPollingInterval_ms / 1000), &u8UserMemory[0]);      [position 1030:31]   
LoggerUI.c  
    uint32_t dwPollInterval = g_loggerParams.dwPollingInterval_ms;      [position 794:31]

When I try to build it, I get the following output -

make -f nbproject/Makefile-pic32mx_eth_sk2.mk SUBPROJECTS= .build-conf
    make  -f nbproject/Makefile-pic32mx_eth_sk2.mk dist/pic32mx_eth_sk2/debug/SmartTagLogger.X.debug.elf
    make[2]: Entering directory 'C:/Users/ColdSIGHT II/MPLABXProjects/SmartTagLogger/SmartTagLogger/SmartTagLogger.X'
    "C:\Program Files\Microchip\xc32\v2.50\bin\xc32-gcc.exe"  -g   -mprocessor=32MX795F512L  -nostartfiles -o dist/pic32mx_eth_sk2/debug/SmartTagLogger.X.debug.elf build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_SPITFT.o build/pic32mx_eth_sk2/debug/_ext/1791500822/glcdfont.o build/pic32mx_eth_sk2/debug/_ext/1207519342/Adafruit_ILI9341.o build/pic32mx_eth_sk2/debug/_ext/507275452/TouchScreen.o build/pic32mx_eth_sk2/debug/_ext/1968542074/adc.o build/pic32mx_eth_sk2/debug/_ext/1968539896/plib_clk.o build/pic32mx_eth_sk2/debug/_ext/895125403/plib_evic.o build/pic32mx_eth_sk2/debug/_ext/895071575/plib_gpio.o build/pic32mx_eth_sk2/debug/_ext/1968535936/i2c_master.o build/pic32mx_eth_sk2/debug/_ext/1968528641/ocm.o build/pic32mx_eth_sk2/debug/_ext/894740228/plib_rtcc.o build/pic32mx_eth_sk2/debug/_ext/1968524398/drv_spi_32bit.o build/pic32mx_eth_sk2/debug/_ext/1965614165/plib_tmr1.o build/pic32mx_eth_sk2/debug/_ext/894668632/plib_uart1.o build/pic32mx_eth_sk2/debug/_ext/894668632/plib_uart2.o build/pic32mx_eth_sk2/debug/_ext/1603735184/xc32_monitor.o build/pic32mx_eth_sk2/debug/_ext/111649226/initialization.o build/pic32mx_eth_sk2/debug/_ext/111649226/interrupts.o build/pic32mx_eth_sk2/debug/_ext/111649226/exceptions.o build/pic32mx_eth_sk2/debug/_ext/977323371/FlashControl.o build/pic32mx_eth_sk2/debug/_ext/977323371/dee_emulation_pic32.o build/pic32mx_eth_sk2/debug/_ext/977323371/NVMem.o build/pic32mx_eth_sk2/debug/_ext/844885456/Intf_LoggerSerial.o build/pic32mx_eth_sk2/debug/_ext/844885456/Intf_Logger.o build/pic32mx_eth_sk2/debug/_ext/844885456/Intf_Config.o build/pic32mx_eth_sk2/debug/_ext/844885456/Inft_History.o build/pic32mx_eth_sk2/debug/_ext/844885456/Intf_Tag.o build/pic32mx_eth_sk2/debug/_ext/1966917630/LoggerUI.o build/pic32mx_eth_sk2/debug/_ext/1553321574/IRI_Access.o build/pic32mx_eth_sk2/debug/_ext/1553321574/commands.pb.o build/pic32mx_eth_sk2/debug/_ext/1553321574/ipj_util.o build/pic32mx_eth_sk2/debug/_ext/1553321574/iri.o build/pic32mx_eth_sk2/debug/_ext/1553321574/messages.pb.o build/pic32mx_eth_sk2/debug/_ext/1553321574/packet.pb.o build/pic32mx_eth_sk2/debug/_ext/1553321574/pb_decode.o build/pic32mx_eth_sk2/debug/_ext/1553321574/pb_encode.o build/pic32mx_eth_sk2/debug/_ext/1553321574/platform_PIC32.o build/pic32mx_eth_sk2/debug/_ext/1553321574/RS500.o build/pic32mx_eth_sk2/debug/_ext/893085893/SDCard.o build/pic32mx_eth_sk2/debug/_ext/1360937237/SmartTagLogger.o build/pic32mx_eth_sk2/debug/_ext/1360937237/Hardware.o build/pic32mx_eth_sk2/debug/_ext/1360937237/Utility.o build/pic32mx_eth_sk2/debug/_ext/1360937237/myStartup.o          -DXPRJ_pic32mx_eth_sk2=pic32mx_eth_sk2  -no-legacy-libc        -Wl,--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,-D=__DEBUG_D,--defsym=_min_heap_size=512,--gc-sections,--no-code-in-dinit,--no-dinit-in-serial-mem,-Map="dist/pic32mx_eth_sk2/debug/SmartTagLogger.X.debug.map",--memorysummary,dist/pic32mx_eth_sk2/debug/memoryfile.xml -mdfp="C:/Users/ColdSIGHT II/.mchp_packs/Microchip/PIC32MX_DFP/1.6.369"
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_SPITFT.o: In function `dmaWait':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/adafruit-gfx-library/adafruit_spitft.c:103: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_SPITFT.o: In function `dmaWait':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/adafruit-gfx-library/adafruit_spitft.c:103: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1207519342/Adafruit_ILI9341.o: In function `Adafruit_ILI9341':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/adafruit_ili9341/adafruit_ili9341.c:86: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1207519342/Adafruit_ILI9341.o: In function `Adafruit_ILI9341':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/adafruit_ili9341/adafruit_ili9341.c:87: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/507275452/TouchScreen.o: In function `EnableStandByMode':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/adafruit_touchscreen/touchscreen.c:23: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/507275452/TouchScreen.o: In function `EnableStandByMode':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/adafruit_touchscreen/touchscreen.c:23: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1968542074/adc.o: In function `init_adc':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/adc/adc.c:6: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1968542074/adc.o: In function `init_adc':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/adc/adc.c:7: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1968535936/i2c_master.o:(.bss+0x0): multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1968535936/i2c_master.o: In function `I2CGetByte':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/i2c/i2c_master.c:125: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1968528641/ocm.o: In function `InitialOC2':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/ocm/ocm.c:5: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1968528641/ocm.o: In function `InitialOC2':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/ocm/ocm.c:5: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/894740228/plib_rtcc.o: In function `RTCC_CallbackRegister':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/rtcc/plib_rtcc.c:83: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/894740228/plib_rtcc.o: In function `RTCC_CallbackRegister':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/rtcc/plib_rtcc.c:88: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1968524398/drv_spi_32bit.o: In function `SPI4MPolIsTransmitOver':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/spi/drv_spi_32bit.c:34: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1968524398/drv_spi_32bit.o: In function `SPI4MPolIsTransmitOver':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/spi/drv_spi_32bit.c:37: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1965614165/plib_tmr1.o: In function `TMR1_FrequencyGet':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/timer/plib_tmr1.c:57: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/1965614165/plib_tmr1.o: In function `TMR1_FrequencyGet':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/timer/plib_tmr1.c:69: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/894668632/plib_uart1.o: In function `UART1_WriteCountGet':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/uart/plib_uart1.c:54: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/894668632/plib_uart1.o: In function `UART1_WriteCountGet':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/uart/plib_uart1.c:60: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/894668632/plib_uart2.o: In function `UART2_WriteCountGet':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/uart/plib_uart2.c:60: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/894668632/plib_uart2.o: In function `UART2_WriteCountGet':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/peripheral/uart/plib_uart2.c:66: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/111649226/initialization.o: In function `SYS_Initialize':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/initialization.c:172: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/111649226/initialization.o: In function `SYS_Initialize':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/initialization.c:174: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/111649226/interrupts.o: In function `CHANGE_NOTICE_Handler':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/interrupts.c:67: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/111649226/interrupts.o: In function `CHANGE_NOTICE_Handler':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/config/pic32mx_eth_sk2/interrupts.c:67: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/111649226/exceptions.o:(.bss+0x0): multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/111649226/exceptions.o:(.bss+0x18): multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/977323371/FlashControl.o: In function `EmulEEPROMRead':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/emulatedeeprom/flashcontrol.c:13: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/977323371/FlashControl.o: In function `EmulEEPROMRead':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/emulatedeeprom/flashcontrol.c:13: multiple definition of `g_tagParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here
    build/pic32mx_eth_sk2/debug/_ext/977323371/dee_emulation_pic32.o: In function `PrevPage':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/emulatedeeprom/dee_emulation_pic32.c:73: multiple definition of `g_loggerParams'
    build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x0): first defined here
    build/pic32mx_eth_sk2/debug/_ext/977323371/dee_emulation_pic32.o: In function `PrevPage':
    c:/users/coldsight ii/mplabxprojects/smarttaglogger/smarttaglogger/src/emulatedeeprom/dee_emulation_pic32.c:73: multiple definition of `g_tagParams'
  
    Info: Loading file: ./c:/program files/microchip/xc32/v2.50/bin/bin/../../lib/gcc/pic32mx/4.8.3/../../../../pic32mx/lib/./ldscripts/elf32pic32mx.x
    collect2.exe: error: ld returned 255 exit status
    make[2]: *** [nbproject/Makefile-pic32mx_eth_sk2.mk:650: dist/pic32mx_eth_sk2/debug/SmartTagLogger.X.debug.elf] Error 255
    make[1]: *** [nbproject/Makefile-pic32mx_eth_sk2.mk:85: .build-conf] Error 2
    make: *** [nbproject/Makefile-impl.mk:39: .build-impl] Error 2
    
    BUILD FAILED (exit value 2, total time: 1s)

In every error, it says that build/pic32mx_eth_sk2/debug/_ext/1791500822/Adafruit_GFX.o:(.bss+0x18): first defined here. Is there something wrong in the linking stage because all the .o files are causing the error. How do I start fixing it? Thank you.

1 Answer 1

1

You appear to be working with old code. In GCC version 10, the default behavior changed.

tag_parameters g_tagParams[TAG_POSITIONS_MAX]; is not a definition but is a tentative definition. (In spite of its name, a tentative definition is not a definition, the same way a prospective employee on a job interview is not an employee.) However, when a translation unit (a source file being compiled, including the headers it includes) contains a tentative definition for an identifier but no definition for it, the compiler creates a definition.

When you compile multiple such translation units and linked them together, there are multiple definitions. This is not actually an error according to the C standard. The standard left this undefined so that different C implementations could treat it differently, as such practices already existed. In GCC prior to version 10, definitions induced by tentative definitions were classified as “common” definitions and were coalesced during linking, meaning that the multiple common definitions were reduced to a single definition. This was traditional Unix behavior.

Here are two ways you can deal with this issue:

  • You can add the switch -fcommon to your GCC compilation commands. This requests the old behavior, that GCC mark the definitions resulting from tentative definitions as common.
  • You can change every tentative definition to a declaration that is not a tentative definition by prefixing it with extern, as in extern tag_parameters g_tagParams[TAG_POSITIONS_MAX];. Then, in one source file, not a header, provide a tentative definition, tag_parameters g_tagParams[TAG_POSITIONS_MAX];. (You can also make this a proper definition by adding an initializer, tag_parameters g_tagParams[TAG_POSITIONS_MAX] = { 0 };.)

Some further explanation is here.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks! I took a whole day trying to figure it out

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.