【问题标题】:Make Error 127 when running trying to compile code运行时尝试编译代码时出现错误 127
【发布时间】:2021-07-25 10:12:50
【问题描述】:

本学期我获得了这个新主题,我们将在其中使用 Discovery STM32 F4,我们仍处于设置阶段。但是我一开始就有这个问题。

当我尝试编译这个“闪烁”代码时,我得到了这个错误:

所以,到目前为止,我们正在使用这个快捷命令“make”来编译代码,并且我们得到了设置它的指令,如下图所示:

谁能看到这里有什么问题?

【问题讨论】:

  • 它无法在指定位置找到/执行arm-none-eabi-gcc(可能是该设备的 gcc 编译器)。检查可执行文件是否存在以及位置是否正确。
  • 以下命令返回什么? gcc -v
  • 感谢您的快速回复。我已在 arm-none-eabi-gcc 所在目录的第二张图片 ls 中显示,它已在此处列出。
  • 另外,gcc -v 返回:没有这样的文件或目录

标签: gcc


【解决方案1】:

Error 127 表示以下两种情况之一:

  1. 找不到文件:您使用的路径不正确。仔细检查程序是否确实在您的$PATH 中,或者在这种情况下,相对路径是正确的——请记住,随机终端的当前工作目录可能与您使用的 IDE 不同。最好只使用绝对路径。
  2. ldso 未找到:您使用的是预编译的二进制文件,并且它需要一个不在您的系统上的解释器。也许您使用的是 x86_64(64 位)发行版,但预构建的是 x86(32 位)。您可以通过打开终端并尝试直接执行来确定这是否是答案。或者通过在/bin/sh 上运行file -L(以获取您的默认/原生格式)和编译器本身(以查看它是什么格式)。

如果问题是(2),那么您可以通过几种不同的方式来解决它:

  1. 获得更好的二进制文件。与为您提供工具链的供应商交谈,并要求他们提供一个不差劲的。
  2. 查看您的发行版是否可以安装 multilib 文件集。大多数 x86_64 64 位发行版允许您并行安装 x86 32 位库。
  3. 使用类似crosstool-ng 的东西构建您自己的交叉编译器。
  4. 您可以在 x86_64 和 x86 安装之间切换,但这似乎有点过激 ;)。

【讨论】:

  • 谢谢您,先生。你帮了我很多,所以问题是我的 Ubuntu 是 x64y,这就是整个问题。我改回x86,它工作得很好。谢谢,再来一次。
  • 我发现第三种情况会触发此错误,应尽可能将其编辑到此答案中(编辑队列已满)。 3. 一个或多个构建可执行文件没有运行权限。确保 chmod +x 在 make 过程中使用的任何脚本或可执行文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2021-12-03
  • 2014-05-13
  • 1970-01-01
相关资源
最近更新 更多