This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

"entry-point symbol "main" undefined" error in CCS v5.3

Other Parts Discussed in Thread: CCSTUDIO

I just imported a CCS v3.3 project into v5.3 and I'm getting the error shown above.

Of course, I never had any errors in v3.3.

Thanks

  • I forgot to mention that I 'd like some help solving this.

    Thanks

  • OK, here's the complete build output:

    **** Build of configuration Debug for project EAPS ****

    "C:\\ti\\ccsv5\\utils\\bin\\gmake" -k all
    'Building target: C:/EAPS_CCSv5.3/src/EAPS/../Debug/EAPS.out'
    'Invoking: C2000 Linker'
    "C:/ti/ccsv5/tools/compiler/c2000_6.1.0/bin/cl2000" -v28 -ml -mt -g --display_error_number --diag_wrap=off -k --output_all_syms --asm_directory="C:/EAPS_CCSv5.3/src/Debug" --obj_directory="C:/EAPS_CCSv5.3/src/Debug" --obj_extension=.obj --asm_extension=.asm -z --stack_size=0x03E0 -m"C:/EAPS_CCSv5.3/src/Debug/EAPS.map" --warn_sections -i"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/lib" -i"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/include" -i"C:/EAPS_CCSv5.3/src/EAPS" -i"C:/EAPS_CCSv5.3/src" -i"C:/EAPS_CCSv5.3/lib" --reread_libs --display_error_number --diag_wrap=off --absolute_exe --entry_point=main --rom_model -o "C:/EAPS_CCSv5.3/src/EAPS/../Debug/EAPS.out" "C:/EAPS_CCSv5.3/src/Debug/vg_ahrs.obj" "C:/EAPS_CCSv5.3/src/Debug/magcalibration.obj" "C:/EAPS_CCSv5.3/src/Debug/globals.obj" "C:/EAPS_CCSv5.3/src/Debug/VgGlobals.obj" "C:/EAPS_CCSv5.3/src/Debug/SDFlash28x_CsmKeys.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_SysCtrl.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_Sci.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_PieVect.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_PieCtrl.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_Mcbsp.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_Gpio.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_GlobalVariableDefs.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_DefaultIsr.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_CpuTimers.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_CodeStartBranch.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_Adc.obj" "C:/EAPS_CCSv5.3/src/Debug/AssyMain.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_serial.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_Proc.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_Filter.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_Cal.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_Bit.obj" -l"rts2800_ml.lib" -l"IQmath.lib" -l"Flash2812_API_V210.lib" "C:/EAPS_CCSv5.3/src/F2812ram.cmd"
    <Linking>
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/IQmath.lib<IQ24toF.obj>": compatibility cannot be determined

    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Erase.obj>": compatibility cannot be determined
    >> Compilation failure
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_EraseSector.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Globals.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Init.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Internals.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Prog.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Prog_Pulse.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_ClearSector.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_CompactSector.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Delay.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_DisInt.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Erase_Pulse.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_ClearLoop.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Compact_Pulse.obj>": compatibility cannot be determined

    undefined first referenced
    symbol in file
    --------- ----------------
    main

    error #10234-D: unresolved symbols remain
    warning #10062-D: entry-point symbol "main" undefined
    error #10010: errors encountered during linking; "C:/EAPS_CCSv5.3/src/EAPS/../Debug/EAPS.out" not built
    gmake: *** [C:/EAPS_CCSv5.3/src/EAPS/../Debug/EAPS.out] Error 1
    gmake: Target `all' not remade because of errors.

    **** Build Finished ****

  • Does your project have a main function in it?  In which file?

  • Yes, there is a main function in AssyMain.c.

    This project works fine in CCS v3.3, but we've updated from Windows XP to 7.

    Thanks

  • Okay, I can see that AssyMain.obj is included on the command line for the link step.  From the name of this file, and from the fact that the entry point is not _c_int00, I assume this is an assembly-only project, so there is no need to name the main function "_main", as you would for a C project.  I don't see an obvious problem so far.

    Please verify that the symbol "main" shows up in the object file AssyMain.obj by running the command-line command:

    ofd2000 AssyMain.obj

    You're looking for the "Symbol Table", which should have an entry for main like so:

     Symbol Table
    
        id name            value      kind    section         binding type   
        -- ----            -----      ----    -------         ------- ----  
         7 main            0x00000000 defined .text           global  object 
  • I'm guessing that the original project had something like RESET as an entry point, but the new project has "main", and that your assembly file doesn't have a ".global main" directive.

  • Here's the line from the ofd2000 output:

    119 _main 0x000001a2 defined .text global object

    BTW, this project is a C program. I tried changing  the branch location in DSP28_CodeStartBranch.asm from _c_int00 to _main to see if it would fix this problem. It didn't.

    However, in the map file I see the following:

    003f1ee8 _main

    UNDEFED    main

    Thanks

     

  • You use the option --entry_point=main, which expects the function to appear as "main" in the symbol table.  Your symbol actually appears as "_main", which is not the same.  You need to change the assembly file to rename _main to main, or change the linker command-line options to include --entry_point=_main

    Alternatively, you could change the entry point to _c_int00, which sets up the system and then calls _main.

    Have a look at the project in the old version of CCS; no doubt it will have a different entry point than you presently have.

  • This project originally used _c_int00 as the entry point. I didn't change it to use _main until I got the build error which is the subject of this discussion. Nothing was changed after migrating the project from v3.3 to v5.3.

    I changed the entry point back to _c_int00 and removed the entry point from the .pjt file. I still get the same build error.

    **************************************************************************

    From running ofd2000 AssyMain.obj I get:

    119 _main           0x000001a2 defined   .text           global  object 

    **************************************************************************

    From the map file:

    003f1ee8 _main

    UNDEFED main

    **************************************************************************

    From searching the workspace for "main":

    73: <option id="com.ti.ccstudio.buildDefinitions.C2000_6.1.linkerID.ENTRY_POINT.419157225" superClass="com.ti.ccstudio.buildDefinitions.C2000_6.1.linkerID.ENTRY_POINT" value="main" valueType="string"/>  

    **************************************************************************

    Thanks

  • Changing the entry point to _c_int00 should have been sufficient.  Please show us your new command line options from the build console for the link step.

  • Here's the whole output:

    **** Build of configuration Debug for project EAPS ****

    "C:\\ti\\ccsv5\\utils\\bin\\gmake" -k all
    'Building target: C:/EAPS_CCSv5.3/src/EAPS/../Debug/EAPS.out'
    'Invoking: C2000 Linker'
    "C:/ti/ccsv5/tools/compiler/c2000_6.1.0/bin/cl2000" -v28 -ml -mt -g --display_error_number --diag_wrap=off -k --output_all_syms --asm_directory="C:/EAPS_CCSv5.3/src/Debug" --obj_directory="C:/EAPS_CCSv5.3/src/Debug" --obj_extension=.obj --asm_extension=.asm -z --stack_size=0x03E0 -m"C:/EAPS_CCSv5.3/src/Debug/EAPS.map" --warn_sections -i"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/lib" -i"C:/ti/ccsv5/tools/compiler/c2000_6.1.0/include" -i"C:/EAPS_CCSv5.3/src/EAPS" -i"C:/EAPS_CCSv5.3/src" -i"C:/EAPS_CCSv5.3/lib" --reread_libs --display_error_number --diag_wrap=off --absolute_exe --entry_point=main --rom_model -o "C:/EAPS_CCSv5.3/src/EAPS/../Debug/EAPS.out" "C:/EAPS_CCSv5.3/src/Debug/vg_ahrs.obj" "C:/EAPS_CCSv5.3/src/Debug/magcalibration.obj" "C:/EAPS_CCSv5.3/src/Debug/globals.obj" "C:/EAPS_CCSv5.3/src/Debug/VgGlobals.obj" "C:/EAPS_CCSv5.3/src/Debug/SDFlash28x_CsmKeys.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_SysCtrl.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_Sci.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_PieVect.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_PieCtrl.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_Mcbsp.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_Gpio.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_GlobalVariableDefs.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_DefaultIsr.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_CpuTimers.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_CodeStartBranch.obj" "C:/EAPS_CCSv5.3/src/Debug/DSP28_Adc.obj" "C:/EAPS_CCSv5.3/src/Debug/AssyMain.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_serial.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_Proc.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_Filter.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_Cal.obj" "C:/EAPS_CCSv5.3/src/Debug/ASPI_Bit.obj" -l"rts2800_ml.lib" -l"IQmath.lib" -l"Flash2812_API_V210.lib" "C:/EAPS_CCSv5.3/src/F2812ram.cmd"
    <Linking>
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/IQmath.lib<IQ24toF.obj>": compatibility cannot be determined

    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Erase.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_EraseSector.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Globals.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Init.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Internals.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Prog.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Prog_Pulse.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_ClearSector.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_CompactSector.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Delay.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_DisInt.obj>": compatibility cannot be determined
    >> Compilation failure
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Erase_Pulse.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_ClearLoop.obj>": compatibility cannot be determined
    warning #16002-D: build attribute vendor section TI missing in "C:/EAPS_CCSv5.3/lib/Flash2812_API_V210.lib<Flash28_Compact_Pulse.obj>": compatibility cannot be determined

    undefined first referenced
    symbol in file
    --------- ----------------
    main

    error #10234-D: unresolved symbols remain
    warning #10062-D: entry-point symbol "main" undefined
    error #10010: errors encountered during linking; "C:/EAPS_CCSv5.3/src/EAPS/../Debug/EAPS.out" not built
    gmake: *** [C:/EAPS_CCSv5.3/src/EAPS/../Debug/EAPS.out] Error 1
    gmake: Target `all' not remade because of errors.

    **** Build Finished ****

  • Even though I edited the .pjt file to remove the entry point "main", it still showed up in the build log.

    So I deleted the whole project folder, made a new folder, copied all the source into it, deleted the entry point from the .pjt file, and imported the 3.3 project again. This time it built without errors.

    I ran "Build all" and "Clean" multiple times after editing the .pjt file. How do you force CCS to really rebuild from scratch?