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.

ARM Runtime Library does not build automatically

Other Parts Discussed in Thread: CCSTUDIO

Hi,

We have tried to change Code Generation Tools for Sitara from V5.0.5 to V5.2.5. At the end of the rebuild the linker fails because Runtime Library "rtsv7A8_A_le_n_v3_eabi.lib" could not be found. So we have tried with V5.2.7 and V15.12.1.LTS which resulted in the same Problem. When I Switch back to V5.0.5 I can do a complete rebuild even after I have manually deleted the Runtime Library first.

I have read some other E2E posts addressing similar problems but without finding a solution to the problem. Some E2E Posts addressing problems that the build of the runtime library fails. But here the build does not even start.

Any help is appreciated.

Best regards,
Patrick

  • We recently discovered that when using the parallel builds feature of CCS, the automatic RTS library build may fail.  So make sure you are not doing that.  I suspect that is is already the case, and this is not the cause of your problem.

    I am not aware of any other issues with automatic builds in compiler versions 5.2.7 or 15.12.1.LTS.  Please copy-n-paste into your next post the invocation of the linker and everything that happens after that.  Please see if some of the troubleshooting techniques discussed here are helpful.

    In the meantime, you can manually build the RTS library you need.  Here is how to do that.

    Thanks and regards,

    -George

  • George,

    This is the output of the linker invocation:

    'Building target: Project.out'
    'Invoking: ARM Linker'
    "C:/CCStudio_V6/ccsv6/tools/compiler/ti-cgt-arm_15.12.1.LTS/bin/armcl" -mv7A8 --code_state=32 --float_support=VFPv3 -me -O3 --opt_for_speed=4 --gcc --define=am335x --

    diag_warning=225 --display_error_number --gen_func_subsections=on --neon --abi=eabi --opt_for_cache -z -m"Project.map" -i"C:/CCStudio_V6/ccsv6/tools/compiler/ti-cgt-

    arm_15.12.1.LTS/lib" -i"C:/CCStudio_V6/ccsv6/tools/compiler/ti-cgt-arm_15.12.1.LTS/include" --reread_libs --display_error_number --warn_sections --
    xml_link_info="Project_linkInfo.xml" --rom_model -o "Project.out"

    <...All the projects object files...>

    -l../AM335x_RAM.cmd -l"rtsv7A8_A_le_n_v3_eabi.lib"
    <Linking>
    error #10008-D: cannot find file "rtsv7A8_A_le_n_v3_eabi.lib"

     undefined             first referenced                   
      symbol                   in file                        
     ---------             ----------------                   
     __STACK_END           ./AM335x_CodeStart.obj             
     __TI_auto_init        ./AM335x_CodeStart.obj             
     __TI_decompress_none                                     
     __TI_decompress_rle24                                    
     __aeabi_idivmod       ./xxxx.obj                        
     __aeabi_uidivmod      ./yyyy.obj            
     free                  ./zzzz.obj
     malloc                ./aaaa.obj
     memcpy                ./bbbb.obj                         
     memset                ./qqqq.obj            
     sprintf               ./vvvv.obj                      

    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "Project.out" not built

    >> Compilation failure
    gmake: *** [Project.out] Error 1
    gmake: Target `all' not remade because of errors.

    **** Build Finished ****

    The linker does not invoke automatic library build although the library does not exist.
    So I have tried a TI example project from StarterWare. To my surprise the library gets built automatically:

    'Building target: ../../../../../../../binary/armv7a/cgt_ccs/am335x/evmskAM335x/demo/Release/demo.out'
    'Invoking: ARM Linker'
    <Linking>
    warning: automatic library build: using library
       "C:\CCStudio_V6\ccsv6\tools\compiler\ti-cgt-arm_15.12.1.LTS\lib\rtsv7A8_A_le
       _n_eabi.lib" for the first time, so it must be built.  This may take a few
       minutes.
    "../demo.cmd", line 89: warning: No placement specified for ".bss"; a default
       placement will be applied.
    'Finished building target: ../../../../../../../binary/armv7a/cgt_ccs/am335x/evmskAM335x/demo/Release/demo.out'
    ' '

    ' '

    **** Build Finished ****

    The difference is that this example project uses <automatic> in the CCS General settings under "Runtime support library" and I use "rtsv7A8_A_le_n_v3_eabi.lib". If I change the TI example to "rtsv7A8_A_le_n_eabi.lib" instead of "<automatic>" then it does not work as well:

    'Building target: ../../../../../../../binary/armv7a/cgt_ccs/am335x/evmskAM335x/demo/Release/demo.out'
    'Invoking: ARM Linker'
    <Linking>
    error: cannot find file "rtsv7A8_A_le_n_eabi.lib"
    "../demo.cmd", line 89: warning: No placement specified for ".bss"; a default
       placement will be applied.

     undefined        first referenced                                                                           
      symbol              in file                                                                                
     ---------        ----------------                                                                           
     __STACK_END      ../../../../../../../binary/armv7a/cgt_ccs/am335x/system_config/Release/system.lib<init.obj>

     __TI_auto_init   ../../../../../../../binary/armv7a/cgt_ccs/am335x/system_config/Release/system.lib<init.obj>
     __aeabi_idivmod  ./lwiplib.obj                                                                              
     __aeabi_uidivmod ./demoGrlib.obj                                                                            
     memcpy           ./cm3wkup_proxy.obj                                                                        
    >> Compilation failure
     memset           ./demoRtc.obj                                                                              
     strcat           ./demoMain.obj                                                                             
     strchr           ./httpd_io.obj                                                                             
     strcmp           ./demoEnet.obj                                                                             
     strlen           ./httpd_io.obj                                                                             
     strncmp          ./httpd_io.obj                                                                             

    error: unresolved symbols remain
    error: errors encountered during linking;
       "../../../../../../../binary/armv7a/cgt_ccs/am335x/evmskAM335x/demo/Release/
       demo.out" not built
    gmake: *** [../../../../../../../binary/armv7a/cgt_ccs/am335x/evmskAM335x/demo/Release/demo.out] Error 1
    gmake: Target `all' not remade because of errors.

    **** Build Finished ****

    Now you could say "just use <automatic>". But we want to define what the linker has to use and it worked like this in the Code Generation Tools V5.0.5.

    Any other suggestions?

    Best regards,
    Patrick

  • As an extension to my last post: It looks like Code Generation Tools V15.12.1.LTS do not behave as described in processors.wiki.ti.com/.../Mklib

    What about users who don't use "libc.a", and instead refer to libraries by name (e.g. rts6200_eh.lib)?

    As a special case, the linker will assume that if the requested library name matches one indexed by libc.a, then it really is the standard compiler RTS library with that name, and will proceed to build it. For this to be safe, users should not re-use the names of standard libraries for custom-built libraries.

  • I cannot reproduce that exact failure, but I can reproduce one that is very similar.  I filed SDSCM00052868 in the SDOWP system to have it investigated.  You are welcome to follow it with the SDOWP link below in my signature.

    As another troubleshooting tip, please consider trying out this technique.

    Thanks and regards,

    -George

  • George,

    I have checked my PATH variable as shown in Mklib article. There is no path pointing to an sh.exe, gmake.exe or cygwin.exe. I have to point out that with ARM CGT V5.0.5 everything works as expected. ARM CGT V5.2.7 and ARM CGT V15.12.1.LTS does not work as expected.

    I use CCS V6.1.1.00022 on a Windows 7 32Bit OS. Attached is an Excel file with the installation details.

    Best regards,
    Patrick

    CCS Installation Details.xlsx