在Linux上安装gcc而无需C编译器

18

如何在没有C编译器的系统上安装gcc?这个系统是基于Linux的防火墙,没有安装任何C编译器。


1
哎?你为什么要安装编译器呢?你所需要的基本操作是 cp,也许还有 mount - Elazar Leibovich
Elazar:如果他使用的是不提供安装工具的Linux发行版,那么他可能需要编译GCC。但我不知道“Linux基础防火墙”是什么意思。 - Stephen
如果您没有安装编译器,我猜测许多其他系统包含和库也没有安装,这些都是编译所需要的。您可以在这里查找一些二进制文件以帮助开始。http://gcc.gnu.org/install/binaries.html - James Black
鉴于OP喜欢IanH的答案,这个问题对于超级用户来说有些边缘。我倾向于将其保留在此处。 - dmckee --- ex-moderator kitten
我认为他对他的“基于Linux”的防火墙进行了root操作,并发现没有编译器。 - Brian Ortiz
5个回答

18

我猜你有一台运行Linux和Shell访问权限的设备,但没有安装软件包管理器或编译器。

因此,您需要交叉编译gcc和整个工具链(至少是binutils)-这很简单,因为gcc、binutils、gdb等的“./configure”脚本支持使用“--target =”选项进行交叉编译。因此,您需要做的就是找出目标架构(uname可以帮助),然后在Linux主机上下载、解压缩gcc源代码并运行“./configure --target=$YOUR_TARGET"。

这样,您现在就可以构建跨编译gcc - 这仍然在您的主机上运行,但会为您的目标(防火墙设备)生成二进制文件。

对于您来说,这可能已经足够了,典型的桌面PC比典型的设备快得多,因此在交叉编译和交叉binutils上编译所需的所有内容可能是有意义的。

但是,如果您真的希望这样做,现在您也可以使用交叉编译器来编译在您的目标上运行的gcc(将其设置为“--host=”选项),并且编译针对您的目标(将其设置为“--target”选项)。

关于允许的主机/目标和示例的详细信息,请参阅gcc文档:http://gcc.gnu.org/install/specific.html


1
我遇到了这个问题 - 一个带有Linux(Debian 3.4)和shell访问权限的设备,但没有软件包管理器或编译器。我想安装apt-get,但我真的不知道从哪里开始。你能给我指点一些适合新手的阅读材料吗?我的Google搜索技巧在这方面失败了。任何帮助都将不胜感激! - opticon

1

这取决于发行版,如果它基于Debian或其他大型发行版之一,您可以通过apt-get或类似工具安装gcc。

如果是更基本的系统,则需要在另一台计算机上编译gcc并将其复制过来。如果您有另一台具有相同架构(例如i386、arm或x86_64)的计算机,那么最容易实现。

我认为您可能还想静态编译它,这样您就不必依赖外部库。


这个Linux系统基于EFW(字节序防火墙)。 - hamSh
5
我可能还要说一下,我会查看您在防火墙上安装gcc的原因,从一开始就听起来不是一个好主意。因此,只有当您确实有非常好的理由时,请尝试沿着这条路走。 - Alexander Kjäll

0
你打算如何获取GCC所需的所有源代码并加载到你的机器上?你能将ISO镜像挂载到这台机器上并从那里安装吗?

0

-1
如果是基于Debian的发行版,您可以使用:
sudo apt-get install gcc

注意:您可能需要将“gcc”更改为Debian软件包的特定版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接