如果我没有足够的空间来安装 GCC,如何为 Linux 编译一些东西?

Nie*_*den 23 linux compiler disk-usage shell-script

我购买了人机界面 (Exor Esmart04)。在 Linux 3.10.12 上运行,但是这个 Linux 被精简并且没有 C 编译器。另一个问题是磁盘空间:

磁盘空间片段

我已经尝试在其上安装 GCC,但我没有足够的磁盘空间,是否有人有其他解决方案或其他需要较少磁盘空间的 C 编译器?

bin*_*rym 63

通常,对于嵌入式设备,不会直接在其上编译软件。做所谓的事情更舒服cross-compilation,简而言之,使用您的常规 PC 编译为不同于 x86 的其他架构。

你说你是 Linux 新手;仅供参考,您面临着一个巨大的问题:交叉编译到嵌入式设备并不是一件容易的事。

我研究了你的 HMI 系统并注意到一些关于 Yocto 的结果。 Yocto简而言之,是为嵌入式设备构建固件的完整框架。

由于您的 HMI 大​​量使用开源项目(Linux,可能是 busybox 等),制造商必须为您提供一种方法来自己重建所有开源组件。通常,您需要做的是BSP董事会支持包)。硬件制造商通常会发货:

  • 使用buildroot允许您从头开始重建整个固件的项目。
  • 使用yocto添加到相应 yocto 项目的新副本中的元,也将允许您重建整个固件。
  • 更罕见的是,一堆糟糕的脚本和预构建的编译器。

所以,如果我是你,我会:

  1. 联系制造商支持以要求使用开源来重建固件。
  2. 同时,在 Google 上搜索“您的 HMI + yocto”、“您的 HMI + buildroot”等。

在谷歌搜索更多之后,我在github上发现了一个 Yocto 元数据。

你可以在meta的conf/machine目录中查看这个meta实现的机器

目前有五台机器定义在以下代号下:

  • us01-kit
  • us02-kit
  • us03-kit
  • usom01
  • usom02

所以我建议你深入研究这个。这可能是您自己构建软件的方式。您也可以在 github 帐户上查看此页面,这可能会给您更多线索。

  • 为嵌入式设备交叉编译*用户模式*(应用程序)代码实际上是一项相对简单的工作。您需要做的就是找到一个针对您的架构的交叉编译器,GCC 几乎涵盖了所有常见的嵌入式设备,特别是考虑到其中绝大多数只是基于 ARM 的 Linux 机器。您不需要 BSP 或其他任何东西来构建应用程序代码。现在,如果你想编译系统/内核,你肯定会这样做,而且它变得有点棘手。但不太可能需要这样做;嵌入式设备可能随附。 (9认同)
  • 交叉编译不必针对不同的 ISA;只是不同的 ABI、库头文件/版本或可执行文件格式,对于相同的 ISA 仍在交叉编译。例如,使用我的 x86-64 Linux 桌面运行 `x86_64-w64-mingw64-gcc` 使 x86-64 Windows `.exe` 可执行(PE 格式,而不是 ELF)是非常交叉编译的;我只能在 Wine 下或通过双引导或在单独的 Windows PC 上运行这些可执行文件。 (2认同)