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.

[参考译文] AM62A7-Q1:AM62Ax 的 TI ARM Clang 编译器链接错误

Guru**** 2416110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1531591/am62a7-q1-ti-arm-clang-compiler-link-error-for-am62ax

器件型号:AM62A7-Q1

工具/软件:

大家好、

我刚刚使用适用于 AM62Ax 产品的 TI Arm CLANG 编译器编译了软件、但卡在最终链接步骤中、因为您可以在链接阶段看到以下错误、但我不知道为什么会发生这种情况、因为错误消息太混乱。

TI ARM Clang 编译器版本:ti-cgt-armllvm_3.2.LTS

如果你有任何建议,请告诉我,非常感谢!

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

    您好、

    请说明您使用的是哪个命令? 您能否同时确认 tiarmlnk.exe 文件位于${Compiler}/bin 目录?

    另外、还要确保文件 tiarmlnk.exe 的大小不是 0。

    此致、

    Tushar

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

    你好 Tushar、

    感谢您的快速答复。

    我们正在使用以下 tiarmlink.exe、其大小不为零。  

    下图显示了我们在链路阶段使用命令的内容。

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

    你(们)好

    这是您运行的唯一命令吗?

    您使用的是哪个 SDK? 请还指定 SDK 版本?

    最终目标是什么? 您是否尝试从 SDK 构建示例?

    我没有看到此命令在 MCU+SDK 中的任何位置直接使用。

    此致、

    Tushar

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

    你好 Tushar、

    SDK 版本如下所示:μ s

     我没有使用原始 SDK 进行编译、只从 SDK 或 MCAL 软件包中获取了一些代码、然后使用 Scons 工具构建它们。

    由于我用我的 scons 环境构建了 mcal Can_App ,并且构建 elf 可以刷写到 EVM 并运行良好,然后我只需添加更多基于这个 Can_App 演示的 AUTOSAR 操作系统代码和我自己的 scons 工具,最后我们可以在修复构建错误后看到链接错误。

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

    您好、 Tushar、

    我想向您提供有关我的建筑流程的更多信息。

    即使我使用@file 来避免 Windows 中的长度限制、但我的 link_objects.lst 大小约为 32KB、其中包括该文件中的许多对象、因此 tiarmlink.exe 存在任何输入参数大小限制、如果是、我认为也许我可以转移到 Linux 编译环境或只是将一些对象归档以解决此问题。

    以上是我的猜测,希望你能告诉我,如果它存在:

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

    尊敬的 Zhen:

    我正在将您的线程路由到编译器团队以供进一步评论。

    此致、

    Tushar

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

    我非常确定您遇到了 此论坛主题中讨论的问题。  我认为这两项改变可以避免问题。  它们都与文件相关 link_objects.lst

    1. 请勿使用 @μ s 特殊的参数
    2. 在文件内部、在单独的一行上写入每个目标文件

    谢谢。此致、

    -乔治

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

    Helllo George,

    感谢您的答复。

    这是我的最新情况:

    现在、我通过在 Linux 环境中构建程序来解决我的问题。  

    让我回答你的关切。

    1.  引用文件时不要使用@  

    答:我想我们可以使用它、因为它在编译器用户手册中是允许的、您可以进行检查。

    2.在文件内,将每个目标文件分别写在一行

    答:我已经做了这件事,所以我的问题没有必要改变。

    我认为根本原因是 tiarmclang.exe 存在参数长度限制 32KB 基于我在 windows 测试,但是. 2m 这对于我的立场来说已经足够了。  

    因此、如果我将 link.rsp 中的目标文件减少到 30kb 以下、则会获得链接结果。

    一旦我在 Linux 环境中构建程序、就没有任何要更改的地方、可以顺利获得链接结果。

    我认为这是输入参数 处理的操作系统环境差异。  

    我强烈建议我们最好在 Linux 环境中编译我们的程序、而且它比 Windows 更快

    即使您 在链接阶段使用@file、也不认为它会突破窗口中的参数限制、这样只会降低此问题的风险。

    如果您对我的描述有任何疑问、请告诉我。

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

    1.  引用文件时不要使用@  

    答:我想我们可以使用它、因为它在编译器用户手册中是允许的、您可以进行检查。

    [/报价]

    我很困惑。  你有试过吗?  我不认为你有。   

    这是另一种你可能喜欢更好的方法。  而不是 @μ s 、在前面加上 -wl 、 例如:

    -wl、link_objects.lst

    这意味着整个文件直接传递给链接器。  该文件的内容绝不会出现在任何命令行上。  避免了命令行长度问题。

    谢谢。此致、

    -乔治