This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

SES Build Fails - main.o has been supplied more than once

I can't find anything on this error on Nordic support or Segger support sites.  I've looked into the obj directory and only find one main.o file (of course!).  Can't see anything in the project file that would cause this problem.

Also, is there a limit on the number of warnings that can occur before the build will fail?  I can't find a project setting for this.  My code generates 24 warnings.

  • Hi,

    What a strange error.

    First of all I would try to clean the entire solution before trying to rebuild ("Build" menu, -> "Clean Solution").

    I notice that next to "main.c" in the Project Explorer panel it says "modified options". Can you check the options for the file (right click, then "Edit Options...")? Do you find any clues there, is there any setting gone wrong?

    Regards,
    Terje

  • Cleaned Solution.  No difference.  Did a rebuild of entire solution and got another indication where SES is compiling main.c two times, hence the reason that the error that main.o was specified twice.  It is clear that it is compiling the same main.c two times since it generates the same warnings both times. I looked in the ses project file and found main.c listed twice.  See screenshot...

    I deleted the second instance, cleaned and rebuilt the entire project, deleted main.o in the obj directory but still get error: "The object file Output"..."/Obj/main.o has been supplied more than once".  At least now main.c isn't being compiled two times but the system seems to remember that there were two main.o instances even though I can't find them or where the object files are specified.  I'm guessing there is a build file that has main.o listed twice.

    Also, to answer your other question, I included the screen shot with the main.c (modified) settings.  As you can see, there are no modifications even though it shows it is modified, I don't know where or how it could have been modified. 

    I've attached main.c and project file for your review.  I had to rename the project file since it wouldn't upload with the .emProject file type.

    6136.main.cPerfShwr-ProjectFile.Pro

    Thanks,

  • Hi,

    The "modified options" tag means options for the particular file override options for the project or solution. There is a hierarchy of options, one for the solution, then one for each project, then one for each file. You can navigate between those levels using the up/down arrows top left of the options window. Changing a value at a lower level in the hierarchy overrides the values provided at a higher level in the hierarchy. If you have overridden a value for a specific file or project, but want to go back to the default settings from higher up, you can right click on the setting and select "Use Inherited Value".

    I found two instances of the file path to ../../../main.c in the project file. (Because it is an xml file you can open the emProject file directly in a text editor.) I removed the extra copy. Can you see if that fixed it? (I stored it as txt, since emProject file ending was not accepted. As a side effect I think you can see it in full text here in DevZone as well, as txt is a known text format.)

    <!DOCTYPE CrossStudio_Project_File>
    <solution Name="Perfect_Shower_Valve" target="8" version="2">
      <project Name="Perfect_Shower_Valve">
        <configuration
          Name="Common"
          arm_architecture="v7EM"
          arm_core_type="Cortex-M4"
          arm_endian="Little"
          arm_fp_abi="Hard"
          arm_fpu_type="FPv4-SP-D16"
          arm_linker_heap_size="8192"
          arm_linker_process_stack_size="0"
          arm_linker_stack_size="8192"
          arm_linker_treat_warnings_as_errors="No"
          arm_simulator_memory_simulation_parameter="RWX 00000000,00100000,FFFFFFFF;RWX 20000000,00010000,CDCDCDCD"
          arm_target_device_name="nRF52832_xxAA"
          arm_target_interface_type="SWD"
          c_preprocessor_definitions="BOARD_PCA10040;CONFIG_GPIO_AS_PINRESET;FLOAT_ABI_HARD;INITIALIZE_USER_SECTIONS;NO_VTOR_CONFIG;NRF52;NRF52832_XXAA;NRF52_PAN_74;NRF_SD_BLE_API_VERSION=6;S132;SOFTDEVICE_PRESENT;SWI_DISABLE0;"
          c_user_include_directories="../../../config;../../../../../../components;../../../../../../components/ble/ble_advertising;../../../../../../components/ble/ble_db_discovery;../../../../../../components/ble/ble_dtm;../../../../../../components/ble/ble_racp;../../../../../../components/ble/ble_services/ble_ancs_c;../../../../../../components/ble/ble_services/ble_ans_c;../../../../../../components/ble/ble_services/ble_bas;../../../../../../components/ble/ble_services/ble_bas_c;../../../../../../components/ble/ble_services/ble_cscs;../../../../../../components/ble/ble_services/ble_cts_c;../../../../../../components/ble/ble_services/ble_dfu;../../../../../../components/ble/ble_services/ble_dis;../../../../../../components/ble/ble_services/ble_gls;../../../../../../components/ble/ble_services/ble_hids;../../../../../../components/ble/ble_services/ble_hrs;../../../../../../components/ble/ble_services/ble_hrs_c;../../../../../../components/ble/ble_services/ble_hts;../../../../../../components/ble/ble_services/ble_ias;../../../../../../components/ble/ble_services/ble_ias_c;../../../../../../components/ble/ble_services/ble_lbs;../../../../../../components/ble/ble_services/ble_lbs_c;../../../../../../components/ble/ble_services/ble_lls;../../../../../../components/ble/ble_services/ble_nus;../../../../../../components/ble/ble_services/ble_nus_c;../../../../../../components/ble/ble_services/ble_rscs;../../../../../../components/ble/ble_services/ble_rscs_c;../../../../../../components/ble/ble_services/ble_tps;../../../../../../components/ble/common;../../../../../../components/ble/nrf_ble_gatt;../../../../../../components/ble/nrf_ble_qwr;../../../../../../components/ble/nrf_ble_scan;../../../../../../components/ble/peer_manager;../../../../../../components/boards;../../../../../../components/libraries/atomic;../../../../../../components/libraries/atomic_fifo;../../../../../../components/libraries/balloc;../../../../../../components/libraries/bootloader/ble_dfu;../../../../../../components/libraries/bsp;../../../../../../components/libraries/button;../../../../../../components/libraries/cli;../../../../../../components/libraries/crc16;../../../../../../components/libraries/crc32;../../../../../../components/libraries/crypto;../../../../../../components/libraries/csense;../../../../../../components/libraries/csense_drv;../../../../../../components/libraries/delay;../../../../../../components/libraries/ecc;../../../../../../components/libraries/experimental_section_vars;../../../../../../components/libraries/experimental_task_manager;../../../../../../components/libraries/fds;../../../../../../components/libraries/fifo;../../../../../../components/libraries/fstorage;../../../../../../components/libraries/gfx;../../../../../../components/libraries/gpiote;../../../../../../components/libraries/hardfault;../../../../../../components/libraries/hci;../../../../../../components/libraries/led_softblink;../../../../../../components/libraries/log;../../../../../../components/libraries/log/src;../../../../../../components/libraries/low_power_pwm;../../../../../../components/libraries/mem_manager;../../../../../../components/libraries/memobj;../../../../../../components/libraries/mpu;../../../../../../components/libraries/mutex;../../../../../../components/libraries/pwm;../../../../../../components/libraries/pwr_mgmt;../../../../../../components/libraries/queue;../../../../../../components/libraries/ringbuf;../../../../../../components/libraries/scheduler;../../../../../../components/libraries/sdcard;../../../../../../components/libraries/slip;../../../../../../components/libraries/sortlist;../../../../../../components/libraries/spi_mngr;../../../../../../components/libraries/stack_guard;../../../../../../components/libraries/strerror;../../../../../../components/libraries/svc;../../../../../../components/libraries/timer;../../../../../../components/libraries/twi_mngr;../../../../../../components/libraries/twi_sensor;../../../../../../components/libraries/uart;../../../../../../components/libraries/usbd;../../../../../../components/libraries/usbd/class/audio;../../../../../../components/libraries/usbd/class/cdc;../../../../../../components/libraries/usbd/class/cdc/acm;../../../../../../components/libraries/usbd/class/hid;../../../../../../components/libraries/usbd/class/hid/generic;../../../../../../components/libraries/usbd/class/hid/kbd;../../../../../../components/libraries/usbd/class/hid/mouse;../../../../../../components/libraries/usbd/class/msc;../../../../../../components/libraries/util;../../../../../../components/nfc/ndef/conn_hand_parser;../../../../../../components/nfc/ndef/conn_hand_parser/ac_rec_parser;../../../../../../components/nfc/ndef/conn_hand_parser/ble_oob_advdata_parser;../../../../../../components/nfc/ndef/conn_hand_parser/le_oob_rec_parser;../../../../../../components/nfc/ndef/connection_handover/ac_rec;../../../../../../components/nfc/ndef/connection_handover/ble_oob_advdata;../../../../../../components/nfc/ndef/connection_handover/ble_pair_lib;../../../../../../components/nfc/ndef/connection_handover/ble_pair_msg;../../../../../../components/nfc/ndef/connection_handover/common;../../../../../../components/nfc/ndef/connection_handover/ep_oob_rec;../../../../../../components/nfc/ndef/connection_handover/hs_rec;../../../../../../components/nfc/ndef/connection_handover/le_oob_rec;../../../../../../components/nfc/ndef/generic/message;../../../../../../components/nfc/ndef/generic/record;../../../../../../components/nfc/ndef/launchapp;../../../../../../components/nfc/ndef/parser/message;../../../../../../components/nfc/ndef/parser/record;../../../../../../components/nfc/ndef/text;../../../../../../components/nfc/ndef/uri;../../../../../../components/nfc/t2t_lib;../../../../../../components/nfc/t2t_parser;../../../../../../components/nfc/t4t_lib;../../../../../../components/nfc/t4t_parser/apdu;../../../../../../components/nfc/t4t_parser/cc_file;../../../../../../components/nfc/t4t_parser/hl_detection_procedure;../../../../../../components/nfc/t4t_parser/tlv;../../../../../../components/softdevice/common;../../../../../../components/softdevice/s132/headers;../../../../../../components/softdevice/s132/headers/nrf52;../../../../../../components/toolchain/cmsis/include;../../../../../../external/fprintf;../../../../../../external/segger_rtt;../../../../../../external/utf_converter;../../../../../../integration/nrfx;../../../../../../integration/nrfx/legacy;../../../../../../modules/nrfx;../../../../../../modules/nrfx/drivers/include;../../../../../../modules/nrfx/hal;../../../../../../modules/nrfx/mdk;../config;"
          debug_additional_load_file="../../../../../../components/softdevice/s132/hex/s132_nrf52_6.1.1_softdevice.hex"
          debug_register_definition_file="../../../../../../modules/nrfx/mdk/nrf52.svd"
          debug_start_from_entry_point_symbol="No"
          debug_target_connection="J-Link"
          gcc_debugging_level="Level 3"
          gcc_entry_point="Reset_Handler"
          linker_output_format="hex"
          linker_printf_fmt_level="long"
          linker_printf_width_precision_supported="Yes"
          linker_scanf_fmt_level="long"
          linker_section_placement_file="flash_placement.xml"
          linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x10000;FLASH_START=0x26000;FLASH_SIZE=0x5a000;RAM_START=0x200029e0;RAM_SIZE=0xd620"
          linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x10000"
          macros="CMSIS_CONFIG_TOOL=../../../../../../external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar"
          project_directory=""
          project_type="Executable" />
        <folder Name="Segger Startup Files">
          <file file_name="$(StudioDir)/source/thumb_crt0.s" />
        </folder>
        <folder Name="nRF_Log">
          <file file_name="../../../../../../components/libraries/log/src/nrf_log_backend_rtt.c" />
          <file file_name="../../../../../../components/libraries/log/src/nrf_log_backend_serial.c" />
          <file file_name="../../../../../../components/libraries/log/src/nrf_log_default_backends.c" />
          <file file_name="../../../../../../components/libraries/log/src/nrf_log_frontend.c" />
          <file file_name="../../../../../../components/libraries/log/src/nrf_log_str_formatter.c" />
        </folder>
        <folder Name="nRF_Libraries">
          <file file_name="../../../../../../components/libraries/button/app_button.c" />
          <file file_name="../../../../../../components/libraries/util/app_error.c" />
          <file file_name="../../../../../../components/libraries/util/app_error_handler_gcc.c" />
          <file file_name="../../../../../../components/libraries/util/app_error_weak.c" />
          <file file_name="../../../../../../components/libraries/fifo/app_fifo.c" />
          <file file_name="../../../../../../components/libraries/scheduler/app_scheduler.c" />
          <file file_name="../../../../../../components/libraries/timer/app_timer.c" />
          <file file_name="../../../../../../components/libraries/uart/app_uart_fifo.c" />
          <file file_name="../../../../../../components/libraries/util/app_util_platform.c" />
          <file file_name="../../../../../../components/libraries/hardfault/hardfault_implementation.c" />
          <file file_name="../../../../../../components/libraries/util/nrf_assert.c" />
          <file file_name="../../../../../../components/libraries/atomic_fifo/nrf_atfifo.c" />
          <file file_name="../../../../../../components/libraries/atomic/nrf_atomic.c" />
          <file file_name="../../../../../../components/libraries/balloc/nrf_balloc.c" />
          <file file_name="../../../../../../external/fprintf/nrf_fprintf.c" />
          <file file_name="../../../../../../external/fprintf/nrf_fprintf_format.c" />
          <file file_name="../../../../../../components/libraries/memobj/nrf_memobj.c" />
          <file file_name="../../../../../../components/libraries/pwr_mgmt/nrf_pwr_mgmt.c" />
          <file file_name="../../../../../../components/libraries/ringbuf/nrf_ringbuf.c" />
          <file file_name="../../../../../../components/libraries/experimental_section_vars/nrf_section_iter.c" />
          <file file_name="../../../../../../components/libraries/strerror/nrf_strerror.c" />
          <file file_name="../../../../../../components/libraries/uart/retarget.c" />
        </folder>
        <folder Name="None">
          <file file_name="../../../../../../modules/nrfx/mdk/ses_startup_nrf52.s" />
          <file file_name="../../../../../../modules/nrfx/mdk/ses_startup_nrf_common.s" />
          <file file_name="../../../../../../modules/nrfx/mdk/system_nrf52.c" />
        </folder>
        <folder Name="Board Definition">
          <file file_name="../../../../../../components/boards/boards.c" />
        </folder>
        <folder Name="nRF_Drivers">
          <file file_name="nrf_drv_clock.c" />
          <file file_name="nrf_drv_uart.c" />
          <file file_name="nrfx_atomic.c">
            <configuration
              Name="Debug"
              c_user_include_directories="C:\\Users\\Rick\\Documents\\CAS_Inc\\Engineering\\Nordic\\nRF5_SDK_15.3.0_59ac345\\modules\\nrfx\\soc;." />
          </file>
          <file file_name="nrfx_clock.c" />
          <file file_name="nrfx_gpiote.c" />
          <file file_name="nrfx_prs.c">
            <configuration
              Name="Common"
              c_user_include_directories="C:\\Users\\Rick\\Documents\\CAS_Inc\\Engineering\\Nordic\\nRF5_SDK_15.3.0_59ac345\\modules\\nrfx\\drivers\\src\\prs;." />
          </file>
          <file file_name="nrfx_uart.c">
            <configuration
              Name="Debug"
              c_user_include_directories="C:\\Users\\Rick\\Documents\\CAS_Inc\\Engineering\\Nordic\\nRF5_SDK_15.3.0_59ac345\\modules\\nrfx\\drivers\\src\\prs;." />
          </file>
          <file file_name="nrfx_uarte.c" />
          <file file_name="../../../../../../modules/nrfx/drivers/src/nrfx_saadc.c">
            <configuration
              Name="Common"
              c_user_include_directories="C:\\Users\\Rick\\Documents\\CAS_Inc\\Engineering\\Nordic\\nRF5_SDK_15.3.0_59ac345\\modules\\nrfx\\drivers\\src;." />
            <configuration
              Name="Debug"
              c_user_include_directories="C:\\Users\\Rick\\Documents\\CAS_Inc\\Engineering\\Nordic\\nRF5_SDK_15.3.0_59ac345\\modules\\nrfx\\drivers\\src;." />
          </file>
          <file file_name="../../../../../../modules/nrfx/drivers/src/prs/nrfx_prs.h" />
        </folder>
        <folder Name="Board Support">
          <file file_name="../../../../../../components/libraries/bsp/bsp.c" />
          <file file_name="../../../../../../components/libraries/bsp/bsp_btn_ble.c" />
        </folder>
        <folder Name="Application">
          <file file_name="../../../main.c">
            <configuration
              Name="Debug"
              asm_additional_options=""
              asm_additional_options_from_file="" />
            <configuration Name="Common" c_user_include_directories="" />
          </file>
          <file file_name="../config/sdk_config.h" />
        </folder>
        <folder Name="nRF_Segger_RTT">
          <file file_name="../../../../../../external/segger_rtt/SEGGER_RTT.c" />
          <file file_name="../../../../../../external/segger_rtt/SEGGER_RTT_Syscalls_SES.c" />
          <file file_name="../../../../../../external/segger_rtt/SEGGER_RTT_printf.c" />
        </folder>
        <folder Name="nRF_BLE">
          <file file_name="../../../../../../components/ble/common/ble_advdata.c" />
          <file file_name="../../../../../../components/ble/ble_db_discovery/ble_db_discovery.c" />
          <file file_name="../../../../../../components/ble/common/ble_srv_common.c" />
          <file file_name="../../../../../../components/ble/nrf_ble_gatt/nrf_ble_gatt.c" />
          <file file_name="../../../../../../components/ble/nrf_ble_scan/nrf_ble_scan.c" />
        </folder>
        <folder Name="UTF8/UTF16 converter">
          <file file_name="../../../../../../external/utf_converter/utf.c" />
        </folder>
        <folder Name="nRF_BLE_Services">
          <file file_name="../../../../../../components/ble/ble_services/ble_nus_c/ble_nus_c.c" />
        </folder>
        <folder Name="nRF_SoftDevice">
          <file file_name="../../../../../../components/softdevice/common/nrf_sdh.c" />
          <file file_name="../../../../../../components/softdevice/common/nrf_sdh_ble.c" />
          <file file_name="../../../../../../components/softdevice/common/nrf_sdh_soc.c" />
        </folder>
      </project>
      <configuration
        Name="Release"
        c_preprocessor_definitions="NDEBUG"
        gcc_optimization_level="Optimize For Size" />
      <configuration
        Name="Debug"
        c_preprocessor_definitions="DEBUG; DEBUG_NRF"
        gcc_optimization_level="None" />
    </solution>
    
    

    Regards,
    Terje

  • Turns out that there were two rogue instances of <main.c> in the project file.  After deleting both of them, the error went away.  Thanks for the tip about modifying the options tree.  That knowledge helps a lot.

Related