如何在没有编译器的 Linux 上安装 gcc

Posted

技术标签:

【中文标题】如何在没有编译器的 Linux 上安装 gcc【英文标题】:How install gcc on Linux without compiler 【发布时间】:2019-08-13 14:24:38 【问题描述】:

我有一个非常轻量级的 Linux 操作系统,上面没有任何编译器。如何在其上安装 gcc 或 g++?目标硬件是 armv7-a 处理器。我可以在我的 x86 系统上编译 gcc,然后在我的 armv7 Linux 上安装它吗??

【问题讨论】:

你可以。这称为交叉编译。这是为不同平台编译程序的一种非常常用的方法。 另一个问题——你真的需要那个系统上的编译器吗?或者在某些开发机器上交叉编译所需的二进制文件就足够了? 您可能会找到一个预构建的 GCC 以在目标硬件上运行,就像您可能会为目标硬件找到预构建的内核和预构建的实用程序一样。但是,您确实需要相当多的空间才能做到这一点——而且空间可能非常宝贵。 【参考方案1】:

是的,您可以在 x86 设备上编译代码,然后将其导出到您的 arm 设备。但为此,您需要一个特殊的编译器。此过程称为“交叉编译”,您可以在其中为其他设备上的特殊目标设备编译代码。

对于 arm 设备,我使用的是“arm-linux-gnueabihf-gcc”编译器。

安装后,您可以像使用普通 gcc 编译器一样使用它。例如,在 linux 上,它会是这样的:

$ arm-linux-gnueabihf-gcc -o your_program your_program.c

然后您将编译后的输出导出到您的设备,它应该可以工作。

【讨论】:

重点是您通常不会使用此技术在目标系统上安装 编译器,而是将编译器保留在主开发机器上然后安装您对目标的最终构建结果。完全去掉中间人。 编译编译器是常见的做法。此外,一些 Linux 发行版为其目标系统提供编译器。这并不罕见。 如何在fedora上安装“arm-linux-gnueabihf-gcc”? sudo dnf install arm-linux-gnueabihf-gcc 不起作用。 我认为是“gcc-arm-linux-gnueabihf”包,而不是“arm-linux-gnueabihf-gcc”。 如果我想为目标平台编译一个内核模块怎么办?【参考方案2】:

交叉编译可能是您的解决方案 它允许您在不同架构的系统上为一个架构编译可执行文件。 这是链接http://www.landley.net/writing/docs/cross-compiling.html

【讨论】:

以上是关于如何在没有编译器的 Linux 上安装 gcc的主要内容,如果未能解决你的问题,请参考以下文章

如何在linux上编译C语言? 没有安装gcc组件怎么办?

安装linux时如何安装GCC

我的Linux上面为啥没有gcc编译器

VMware安装的Linux Fedora , 关于gcc 的问题

怎么查看linux 是不是安装gcc

如何解决gcc编译c程序找不到头文件的问题