我正在嵌入式目标上使用供应商提供的 Linux,并且缺少诸如 等的make
某些功能。apt-get
是否可以将包管理器安装到我的嵌入式目标板上?这是正确的做法吗? tkx!
答案1
通常,按照当前标准,嵌入式系统的资源有限,RAM 较小,存储空间也非常小;因此系统环境有限,缺乏开发工具。
通常替代库如uClibc也用glibc代替来节省资源。
uClibc 的目标是在少量空间内提供尽可能多的功能,并且主要用于嵌入式使用。它在支持的功能中也是高度可配置的,但代价是不同配置的 ABI 差异。 uClibc 被重新设计为嵌入式 Linux 的 C 库。我们不需要担心诸如 MS-DOS 支持、BeOS 或 AmigaOs 等任何其他系统的问题。这让我们消除了很多复杂性并非常仔细地针对 Linux 进行优化。
通常,开发阶段是通过交叉编译器在系统外部完成的。因此需要在另一台机器(可能是完整的 Linux 开发服务器)上安装/设置工具链/开发环境。
在一些开源项目中,工具链是免费提供的,在商业嵌入式解决方案中,您通常必须从供应商那里获取它。
工具链是一组不同的软件开发工具,它们通过特定阶段链接(或链接)在一起,例如 GCC、binutils 和 glibc(GNU 工具链的一部分)。可选地,工具链可以包含其他工具,例如用于特定编程语言(例如,C++)的调试器或编译器。
至于软件包维护者,请检查是否有本地软件包 - 因为它将有一个关联的官方存储库,并为您的系统提供更多实用程序和安全更新;例如在 OpenWRT 中它被称为奥普克。
Opkg(Open PackKaGe Management)是一个基于ipkg的轻量级包管理系统。它是用C语言编写的,操作上类似于APT/dpkg。它旨在用于嵌入式 Linux 设备,并在 OpenEmbedded 和 OpenWrt 项目中以此功能使用。
答案2
如果您想在运行 Linux 内核的系统上安装 Debian 软件包,您可以将 Debian 层次结构安装在chroot和反引导程序。直接在根目录安装 Debian 软件包的可能性极小,因为 Debian 软件包管理器会与基本系统竞争来决定关键系统文件的内容。只有一种工具可以决定什么是/bin/sh
。
施鲁特对于透明地执行安装在 chroot 中的程序非常有用。
如何在 64 位 Debian/Ubuntu 上运行 32 位程序?有一个关于在另一个类 Debian 发行版下安装类 Debian 发行版作为 chroot 的教程。如果外部系统不是类似 Debian 的,只需稍作调整即可使用;您只需手动下载 debootstrap,或分两个阶段运行 debootstrap(请参阅手册):一个阶段是--foreign
在您的 PC 上准备一个目录树,然后将目录树传输到您认为合适的目标设备,并debootstrap --second-stage
在目标设备。
但如果这是一个资源有限的嵌入式设备(而不是 Android 手机),那么 Debian 可能会过重。鲁伊·F·里贝罗的回答对替代的、轻量级的发行版有一些建议。
答案3
正确的方法是手动安装所需的软件,而不使用包管理器。
如果您的系统上没有可用的包管理器,通常有充分的理由。要么存在空间限制(没有空间限制make
是这种情况的一个很好的指标),要么您的系统与现有存储库不二进制兼容。因此,您尝试安装包管理器可能只是浪费时间。
即使在您的系统上安装包管理器实际上是可行的,您也可能在不支持包管理器的系统上使用它时遇到问题。您必须以某种方式告诉它您已经拥有哪些文件,以及这些文件满足哪些依赖关系。基本上,如果您想通过包管理器添加新软件,则必须使用包从头开始重新安装整个系统。
答案4
对的,这是可能的。 apt的源代码可用这里 下载并构建源并将其添加到您的目标中。
必须维护包含软件包的单独存储库才能使用 apt-get。