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 11.2 v.0编译静态库项目时

Guru**** 2582405 points
Other Parts Discussed in Thread: CCSTUDIO

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1094851/internal-error---a-stack-overflow-error-has-occurred-when-compiling-a-static-library-project-with-ccs-v11-2-0

主题中讨论的其他部件:CCStudio

我们为C2000应用开发了几个静态库,这些静态库是在较早版本的CCS (v 8.0 )中创建和编译的,没有任何问题。 当我们尝试在v10.x甚至是最新的11.2 vv.0中编译这些项目时,我们不断收到上述错误。 我认为这可能与将项目设置从v 8.0 项目移植到新版本的CCS有关,所以我尝试在最新版本的CCS中从头开始创建项目。 当我这样做时,项目第一次编译就会成功,但所有后续尝试都将导致上述错误。 我在两台不同的计算机(Windows 7 64位和Windows 10 Pro)上尝试过此操作,结果相同。 我还尝试了几个不同的库,它们都具有不同的源文件,它们都导致相同的行为。 下面是创建新项目所需步骤的快速摘要:

1)创建新的工作空间文件夹并在CCS v 11.2 中打开.........0

2)选择Project (项目)-> New CCS Project (新建CCS项目)

3)将目标设置为"Generic C28xx Device"(通用C28xx设备),输出类型设置为"Static Library"(静态库),输出格式设置为"Legacy COFF"(传统COFF)

4)从默认设置更改的项目属性只有:

 a) C2000编译器->处理器选项->指定浮点支持= fpu32

 b)在C2000编译器->包含选项下增加了两个路径

 c)在C2000存档器->基本选项下为生成的.lib文件指定了名称/位置

5)将两个源代码为.h和.c的新文件夹复制到新项目文件夹中

第一次在新项目上运行“生成项目”时,它将成功编译而不会出错。 如果再次尝试“生成项目”,我会看到“内部错误”消息框,其中显示消息“发生了堆栈溢出错误。 建议您退出工作台。 可能会发生后续错误,并且可能会在不发出警告的情况下终止工作台。 有关详情,请参阅.log文件。" 如果我进行任何代码更改并再次尝试“生成项目”,我会不断收到此消息。 但是,如果我运行“重建项目”或“清理项目”,然后运行“生成项目”,它将成功编译而不会出错。

我已经浏览了生成的.log文件,但我自己无法理解它。 以下是文件的片段:

!消息“生成项目”期间发生内部错误。
!堆栈0
java.lang.StackOverflowError
at java.base/java.util.HashMap.putVal (未知来源)
at java.base/java.util.HashMap.put (未知源)
at java.base/java.util.HashSet.add(未知来源)
com.ti.ccstudio.project.core.internal.build.temp.BuildDescriptionManager.getSteps(BuildDescriptionManager.java:172)
com.ti.ccstudio.project.core.internal.build.temp.BuildDescriptionManager.doAccept(BuildDescriptionManager.java:127)
com.ti.ccstudio.project.core.internal.build.temp.BuildDescriptionManager.doAccept(BuildDescriptionManager.java:132)
com.ti.ccstudio.project.core.internal.build.temp.BuildDescriptionManager.doAccept(BuildDescriptionManager.java:132)
com.ti.ccstudio.project.core.internal.build.temp.BuildDescriptionManager.doAccept(BuildDescriptionManager.java:132)

我可以提供完整的.log文件(如果有用)。

我有两个主要的问题是:1)有什么想法为什么会发生这种情况,以及如何避免发生这种情况? 2)如果我使用"重建项目",我应该完全关注生成的.lib文件的完整性吗?

谢谢

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

    您好,

    [quote userid="10.0793万" url="~/support/tools/code-composer-studio-group/CCS /f/code-composer-studio-forum/109.4851万/internary-error--a-stack-overflow-error-has-occurred-whene-compering-a-static-library-project-with-ho-v11-2-0" CCS 1)为什么不会发生这种情况?

    我不确定原因。 我无法再现此问题。

    您能否分享您的实际项目? 您可以压缩整个项目文件夹并将其附加到此线程(如果您不想公开共享,也可以通过私人E2E消息与我联系)。

    [quote userid="10.0793万" url="~/support/tools/code-composer-studio-group/CCS /f/code-composer-studio-forum/109.4851万/internary-error--a-stack-overflow-error-has-occurred-wh-compile-a-static-library-project-with-CCS-v11-2-0" Rebuild 2)如果要考虑所有文件的完整性,那么是否应该使用".lib"文件?

    不会。唯一的"问题"是"重建项目"需要更长时间,因为它会重新清理和构建所有内容。

    谢谢

    KI

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

    感谢KI的回答。 对于#1,我将在一分钟内将压缩项目发送给您。 对于第2个库,重建时间不是问题,因为这些是小型支持库,因此清理和构建时间相对较短。

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

    我收到了测试案例。 谢谢你。 我可以重现这个问题。 我需要将此问题上报给工程部门进行进一步分析。

    谢谢

    KI

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

    我仍在等待工程部门的回复。 但是,我自己做了一些试验,我相信我找到了问题的根本原因。 如果输出目录是项目文件夹或子文件夹中的路径,而不是构建配置子文件夹中的某个路径,则可能会发生错误。

    示例:

    ${project_root}/lib/library.lib

    上述操作将失败

    如果改为:

    ${project_root}/Release/library.lib

    这不会失败。

    项目文件夹之外的任何路径都可以正常使用。

    根据您之前提到的内容,这在CCS 8.x中似乎是可行的?

    谢谢

    KI

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

    有趣... 遗憾的是,我们多年来开发并添加了许多不同的支持库,它们都使用相同的项目文件夹结构。 我可以确认这不是CCS早期版本(4.x - 8.x)的问题-我不确定CCS 9.x的情况,因为我们从8.x跳到10.x 现在,使用"重建"而不是"构建"可能是我们最简单的解决方法,直到我们决定更改项目文件夹结构,或者是否/何时可以在未来的CCS版本中解决此问题...

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

    CCS 8.x对我也会出现相同的错误。

    我怀疑在项目(子)文件夹中生成库而不是在生成配置子文件夹中生成库时会发生冲突。 这是因为项目(子)文件夹中的所有文件都被视为构建的一部分。 因此,生成的库现在将被视为输入到链接器的文件,从而导致混淆。 因此不支持这种方法。 但是,CCS不应该有这种堆栈溢出错误。

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

    我尝试使用CCS 7.4 ,但未出现错误。 因此,它一定是CCS 8.x版本之一中某个时间出现的问题...

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

    我当时使用的是CCS 8的早期版本(8.0 .0),当时我注意到没有发生这种情况-我猜你是在使用8.x的更高版本时,你注意到发生了同样的错误?

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

    在我的示例中,我将输出路径设置为:

    ./libtest.lib

    在7.4 中,它可以处理我之前提到的情形:

    novar luo 说:
    现在将被视为产生混淆的库,并被认为是一个错误的库,它将被输入的错误,它将被认为是一个错误的文件。

    在依赖关系扫描过程中,它将忽略库(它应该这样做)

    在8.3 1及更高版本中,它只是遇到一个异常。

    我将为此生成一个错误。

    KI

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    novar luo 说:
    561[]i#56118]</s>5.6118万

    此错误的跟踪链接是: https://sir.ext.ti.com/jira/browse/EXT_EP-1.0817万

    谢谢

    KI

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

    再次感谢您的支持。 鉴于我现在可以使用"重建"选项来解决此问题,现在您已经为此提交了一个错误,我将认为此问题/讨论已解决。