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.

[参考译文] AM623:CGT-PRU 无法执行二进制文件:可执行格式错误

Guru**** 2894810 points

Other Parts Discussed in Thread: AM623

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1642604/am623-cgt-pru-cannot-execute-binary-file-exec-format-error

器件型号: AM623

大家好、我将建议在 AM623 中对 PRUSS 进行编程。
我成功地在 Debian Distro 上安装了编译器 CGT-PRU-2.3.3 并成功地编译了一个程序。  

但是、我不得不将文件夹移动到安装它的位置、移动后、make 文件抛出以下错误:  

CGT-PRU/usr/bin/clpru:无法执行二进制文件
make:***[Makefile:89:gen/main.object] Error 126

我尝试直接启动二进制文件、但它给了我另一个错误:

CGT-PRU/usr/bin/clpru:无法执行二进制文件:EXEC 格式错误

我已经尝试删除并重新安装编译器、但错误总是相同的。  

在更改编译器的文件夹之前、我更新了发行版。 可以更新编译器的“预编译“吗?

有关我的发行版的更多信息:
immagine.png

注:可能只是我看到 clpru 文件用于 32 位处理器、但发行版位于 x86_64 处理器上。

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

    您好、Ettore、

    只是为了澄清一下、在“将文件夹移动到【您】安装它的位置“之后、您无法运行 clpru 可执行文件、是的?

    我不清楚您的文件系统在移动文件夹之前和之后的状态。 您能澄清一下吗?

    似乎 clpru 可执行文件被移动文件夹的行为破坏了。 clpru 是在移动过程中还是在与 Debian 发行版交互过程中被修改的?

    如果我们可以验证 clrpu 文件是否已损坏、如果是、确定损坏的来源、这将很有用。

    此致、

    Todd Snider

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

    尊敬的 Ettore:

    同事关于检测 clpru 可执行文件是否已被修改的建议是运行文件命令。 例如、这是在 Linux 安装的 PRU 2.3.3 编译器工具上运行文件命令时获得的输出:

    %>文件/path/to/install/bin/clpru

    /path/to/install/bin/clpru:ELF 64 位 LSB 可执行文件、x86-64、版本 1 (SYSV)、静态链接、适用于 GNU/Linux 2.6.24、 未剥离

    您能否尝试一下、看看安装后、移动文件夹后输出是否合理?

    此致、

    Todd Snider

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

    尊敬的 Todd:  

    对不起,我的英语不好,我安装了 CGT 在测试文件夹. 然后、在“ti“文件夹中创建了一个 CGT-PRU 目录、并将编译器移至此处。

    当我看到 makefile 无法运行时、我检测到刚刚创建的目录中的文件、并在该目录中重新安装编译器。

    我还尝试在旧的测试文件夹中重新安装、但当我尝试启动“clpru“时、错误仍然是“无法执行二进制文件:exec 格式错误“。

    我还看了安装程序的校验和、它没有损坏。

    当我启动文件 clpru 时、结果如下:
    clpru:elf 32 位 LSB 可执行文件、ARM、EABI5 版本 1 (GNU/Linux)、静态链接、用于 GNU/Linux 2.6.32、BuildID[SHA1]=9a690909f90bb46d4b9714215ed610a4ecbdb52c、未剥离

    问题是我有一台 64 位计算机、而 clpru 是一台 32 位计算机吗?

    感谢您的参与、
    Ettore

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

    尊敬的 Ettore:

    我预计 64 位计算机  在运行 32 位可执行文件时不会出现问题。 我想知道您的“path“环境变量是否与 PRU 安装在移动后的最终位置不同步。

    您能否使用完整路径名调用 clpru 可执行文件? 例如、

    %>/path/to/where/install/has/moved/bin/clpru -version

    ~ Todd  

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

    尊敬的 Todd:

    仿真结果如下

    %>/home/efavari/ti/cgt-pru/usr/bin/clpru -version
    bash:/home/efavari/ti/cgt-pru/usr/bin/clpru:无法执行二进制文件:exec 格式错误

    即使我尝试在旧文件夹中重新安装它并直接调用它,它也会出现相同的错误

    %>/home/efavari/ti/TEST/usr/bin/clpru -version
    bash:/home/efavari/ti/TEST/usr/bin/clpru:无法执行二进制文件:exec 格式错误

    我以前没有提到的一件事是,这个问题发生在工作日之间:我得到一切工作的前一天和打开发行版后的第二天,更新它,然后移动文件。 之后、每次调用都会重新命名为“无法执行二进制文件:可执行格式错误“。 我不知道编译器是否在更新和移动之间工作。

    _Ettore__

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

    尊敬的 Ettore:

    Debian 发行版之外的新安装是否正常运行? 唯一的假设是无法运行 clpru 可执行文件与 Debian Distro 环境的存在有关。 如果您可以在本机操作系统环境中成功执行新安装的 clpru 而不以任何方式涉及 Debian 发行版,我就必须排除 PRU 编译器工具作为问题的根源。

    对“无法执行二进制文件:exec format error“诊断消息进行搜索会提示以下可能的解决方案:

    • 检查 “file“命令输出以验证二进制文件的架构
    • 检查系统架构兼容性 — 鉴于 clpru 是一个 32 位可执行文件、而您的系统是 64 位、可能需要安装一些 32 位兼容库(例如 Linux 上的 ia32-libs)。 请注意、版本 2.3.3 PRU 编译器工具是在 2019 年发布的、发布时间很久以前。 这可能是您正在使用的操作系统环境的问题吗?
    • 检查文件完整性 — 检查新安装的校验和与移动的校验和(我想您在本线程前面提到过此检查)
    • 检查文件权限 — 特别是执行能力
    • 检查环境兼容性 — clpru 旨在在本机或本机兼容的操作系统环境中运行
    • 查看 clpru 是否可以在通过“/clpru“安装的 bin 目录中运行

    通过“无法执行二进制文件:Exec 格式错误“字符串搜索 Web 可能值得您花时间。 有几个不同的网站声称拥有有关如何解决此问题的有用信息。

    你能尝试一下上面一些你还没有尝试过的建议吗? 我无法重现您的环境和/或导致此问题的情况、因此我在尝试重现您所看到的问题时遇到了损失。

    ~ Todd

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

    尊敬的 Todd:

    谢谢你的建议,我会尝试一些事情,并报告,如果我找到的东西。

    _Ettore__