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.

[参考译文] CCS/TM4C129ENCPDT:CCSv7中的错误? 项目属性->常规中的链接器命令文件字段变为空白

Guru**** 2524550 points
Other Parts Discussed in Thread: TM4C129ENCPDT

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/601567/ccs-tm4c129encpdt-bug-in-ccsv7-linker-command-file-field-goes-blank-in-project-properties---general

零件号:TM4C129ENCPDT

工具/软件:Code Composer Studio

在“项目属性”->“常规”下,“链接器命令文件”字段将不可解释地变为空白。

我们正在将CCSv7版本TM4C 7.1 .0.0.0016万 与TI和GNU编译器配合使用,以便为TM4C系列MCU编写代码。 该项目最初是为TI编译器创建的。 随后,我们按照以下说明操作: processors.wiki.ti.com/.../Using_GCC_with_Tiva_in_CCSv6 为GNU GCC (Linaro)添加构建配置。 编译器版本为:TI-CGT-ARM_ARM.3.LTS 16.9 和gcc-ARP-NONE-eabi-4_9-2015q3。

我们的项目将按照以下建议签入版本控制系统: processors.wiki.ti.com/.../Source_control_with_CCS ,即我们签入了.ccsproject,.cproject,.project和.settings文件夹,但我们没有签入以下文件夹:\Debug或\Release或其他生成工件文件夹,.config或.eass。 我们没有检入targetConfigs文件夹,因为我们使用的是"自动管理项目的目标配置",并且在检查其中的文件时,它们似乎与构建过程无关。 我们还遵循了此处的建议: processors.wiki.ti.com/.../Portable_Projects 以使项目可移植,因为多台计算机上的多个用户可能会将项目从版本控制中签出并处理该项目。 我们做的另一件事是将tm4c129encpdt.lds文件(这是GNU链接器命令文件)复制到项目目录中,以保持一致性,因为tm4c129encpdt.cmd (TI链接器命令文件)位于项目目录中。 我们将tm4c129encpdt.lds重命名为tm4c129encpdt_gcc.lds,以便与添加GNU构建配置时创建的tm4c129encpdt_startup_css_gcc.c文件保持一致。 我们在“项目属性”->“常规”的“链接器命令文件”字段中设置此名称。 测试该构建成功后,我们将项目状态承诺为版本控制。

为了测试该项目实际上是否可移植,我们将其签出到一个新目录中,然后将其导入到新的CCS工作区中。 当我们检查设置以确保没有丢失任何内容时,我们注意到上述链接程序命令文件字段(在“项目属性”->“常规”下)现在为空。 奇怪的是,构建似乎仍然成功,并且链接程序命令引用此文件:

'调用:GNU Linker '
c:\ti/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc.exe"-dpart_TM4C129ENCPDT -DT-DTARGET_is_tumb 4C129_RA0 -ffunci-sections -Fdata-dwar-m-m/swlect-mc-mw-mc-mc3"mwlf-fmc-mc-mc-msp-mc" msp-mcwlip-dwar-dwar-dim_mwlip-dimmwlf-dimmc-mc-darm-dimmc-dimmc"-dav-dav-dimmwlip-dav-dimmwlip-dimmwlip-dim-dim-dim-dim-dim-dim-dimm/smwlip-dimm/smwlip-mwlf-mwlip-dwlip- 2.1 4.178
'完成构建目标:master.out '

我们担心这可能是一个错误。 另外,我们担心在“项目属性”中更改任何其他设置并应用更改会应用此字段中现在不正确的内容,并丢失链接程序命令文件设置。

在提交和签出版本控制时保留项目状态,并且不会丢失影响生成的项目设置,这一点至关重要。

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

    \n我们做的另一件事是将 tm4c129encpdt.lds文件(这是GNU链接器命令文件)复制到项目目录中,以保持一致性,因为 tm4c129encpdt.cmd(TI链接器命令文件)位于项目目录中。 我们将 tm4c129encpdt.lds重命名tm4c129encpdt_gcc.lds,以便与 添加GNU构建配置时创建的tm4c129encpdt_startup_css_gcc.c文件保持一致。 我们在“项目属性”->“常规”的“链接器命令文件”字段中设置此名称。 [/引述]

    我重新创建了一个类似的环境,我认为“链接器命令文件”字段的意图与您使用它的方式略有不同。 例如,创建新项目时,可以使用“链接器命令文件”字段从CCS提供的文件列表中选择特定的链接器命令文件。 执行此操作时,该文件将被复制到项目目录中,以便项目使用。 您也可以将该字段设置为<automatic>,在这种情况下,CCS根据设备选择选择选择要复制的相应链接程序命令文件。

    但是,该字段不用于指定项目目录中可能已存在的自定义链接程序命令文件的名称。 如果重命名项目目录中的链接程序命令文件并将其添加到“链接程序命令文件”字段,请单击“确定”并返回到“项目属性”,则该字段为空。 因此,即使在不签入/签出版本控制的情况下也会发生此行为。 不必将文件添加到该字段,因为项目目录中的任何文件都将自动假定为构建的一部分,因此无论如何都将传递给链接程序。 因此,只要链接程序命令文件位于项目目录中,即使未在“链接程序命令文件”字段中指定,也将为生成选择该文件。  

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

    我想我明白你的意思。 用户界面可以从改进中受益。 与其将此字段显示为保存持久设置的字段,不如将其显示为不同的字段,如单击按钮进行一次性导入,这样会很有帮助。 然后,您可以显式选择链接程序文件,或者让它自动为您选择一个链接程序文件。 从用户的角度来看,这一点将更加明确。

    为了跟进此问题,由于此字段不是我们想象的那样,告诉CCS要使用哪个链接程序文件的持久性设置在哪里?

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

    \n用户界面可以从改进中受益。 [/引述]

    我会将此反馈传递给开发团队,看看是否有什么可以改进的地方。

    [QUETE USER="12LE12PM"]要跟进此问题,由于此字段不是我们想象的那样,告诉CCS要使用哪个链接器文件的持久性设置在哪里?[/QUET]

    有两种不同的方法可以告诉CCS要使用哪个链接程序文件:
    -任何扩展名为.cmd的文件(无论是添加到项目还是链接到项目)都将被视为构建的一部分(除非它被明确"排除在构建之外")。  
    链接程序cmd文件可以在链接器选项->文件搜索路径->--library选项中指定,并在--search_path选项中指定其路径。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答并将我们的用户反馈传递给开发团队。 我们非常赞赏这一点。