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.

[参考译文] 编译器:.init_array和修改auto_init_elf,同时保持RTS库的状态

Guru**** 2511555 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/632865/compiler-init_array-and-modifying-auto_init_elf-while-keeping-rts-library-in-tact

工具/软件:TI C/C++编译器

1. 是否可以在项目和构建中包括boot.c和autoinit.c,但也可以包括TI版本的RTS库?

我想修改此代码以排除区域;例如,我想控制作为"第三"引导映像加载的映像的构造函数。  我有4个映像, 一个引导加载程序,一个同时加载的核心映像。  根据一些输入,我将另一个图像的数据加载到内存中。  内核和此“其他映像”是同一输出文件的一部分,但通过修改链接程序命令文件以使特殊组进入固定内存位置,可以将它们拆分为不同的二进制文件

/*------------------ auto_init_elf *
如果 (__TI_INITARRAY_Base !=__TI_INITARRAY_LIMIT)  

   INT I = 0;
   While (&(__TI_INITARRAY_Base[I]) !=__TI_INITARRAY_LIMIT)  

      //伪代码

    如果(__TI_INITARRAY_Base[i]>= 0xEB00_0000 )
      __TI_INITARRAY_Base[I++]();

     否则,不要调用 尚未加载的构造函数  
}

2. 如果对1的回答是“是”,则我在清除三个链接器错误时遇到问题: _c_int00,_stack和另一个。  

链接程序文件路径中对RTS*.lib的引用

将链接程序顺序更改为boot.obj,autoinit.obj,然后将rts.lib更改为最后一个lib。  

感谢您的任何帮助,

谢谢!

意愿

Code Composer 5.x,

CGT 7.3 23

64x+处理器

已启用例外,

Big Endian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1。  是否可以在项目和构建中包括boot.c和autoinit.c,但也可以包括TI版本的RTS库?

    是的。

    2.  如果对1的回答是"是",则我无法消除三个链接器错误: _c_int00,_stack和另一个。  [/引述]

    请准确显示链接器的调用方式以及所有结果诊断。  我或许能够仅凭这一点就为您提供帮助。  但如果我要求您提供完整的CCS项目,请不要感到惊讶。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,George,

    下面的粗体行使我困惑--为什么我们使用XDC工具中的RTS lib boot.ae64pe?

    '调用:C6000链接器'
    c:/CS_51/ccsv5/tools/compiler/C6000/bin/cl65"-mv64+--symdebug:none -O2 -MS0 --lreated_ansi --rtti --gcc --definit=_C6457L_--definit=cs_cmc_mode_100MBps --definit_c64b_c=5-commvip_commv-commv_64_m=-common -commv-commv_c_-commv_64_c_  
    链接>
    错误#1.0056万:重新定义符号"_auto_init_elf":首先在中定义
      "./autoinit.obj";在中重新定义
      "C:\CCS_51\xdctools_3_23_02_47\packages\ti\targets\rts6000\lib\boot.ae64Pe<A.
      utoinit.oe64Pe>"
    错误#1.001万:链接时遇到错误;“MyProject.out”不是
      已构建


    是否要打开诊断程序或此信息是否足够?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    George,

    我想我现在有了答案:

    1.是的,链接程序顺序必须包含三个“库”。
    答 auto_init.c文件。
    B. RTS库
    C. 生成的链接程序命令文件。

    然后,它就能工作。

    谢谢!!