【问题标题】:Install gcc on linux with no root privilege在没有root权限的linux上安装gcc
【发布时间】:2010-07-09 11:19:42
【问题描述】:

我可以使用公共图书馆中的计算机,我想尝试一些 C++ 和其他代码。问题是没有安装 g++,我无法使用软件包安装它,因为我没有 root 访问权限。有没有一种“智能”的方法可以在主文件夹中创建一个完整的编程环境?

我已经安装了 gcc(我可以编译 C 代码)。另外,我有一个一致的主文件夹。我不知道在哪里可以找到预编译的 g++,我只找到了源代码,但我不知道如何处理它。我试图让他们安装这个,但没有成功:)

【问题讨论】:

  • 库是否安装了gcc?
  • 我可以使用 gcc 编译 C 源代码。

标签: c++ linux gcc g++


【解决方案1】:

您可以使用 --prefix 参数运行配置脚本:../gcc-4.5.0/configure --prefix=/home/foo/bar。由于 c++ 标准库很可能与您系统上的标准库不同,因此您必须先设置export LD_LIBRARY_PATH=/home/foo/bar/lib,然后才能启动由该编译器编译的程序。

【讨论】:

  • 这取决于有一个现有的编译器工具链来引导。
  • 我试过 ./configure --prefix=... 但它给了我:configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.."
  • 您似乎正在尝试在源代码树中进行构建。这不受 gcc 维护者的支持,他们希望构建位于 gcc 源代码旁边的目录中。另外,你打开了哪些包裹?您需要gcc-coregcc-g++ 来生成c++ 编译器(或完整的[=largest] 包)。缺少的install-sh 在 gcc-core 包中。
  • linuxfromscratch.org/lfs/view/stable 可能对如何构建 g++ 有用。
  • 如果您使用自己的 GMP、MPC、MPFR 和 ISL 版本,您实际上需要在构建 GCC 之前执行此操作,因为 GCC 使用这些共享库。
【解决方案2】:

如果你想以本地用户身份安装它

GNU GSRC 提供了一种简单的方法

链接:http://www.gnu.org/software/gsrc/

配置完成后,只需指定以下命令:

cd gsrc
make -C pkg/gnu/gcc 
make -C pkg/gnu/gcc install

也可以更改第二步以加快 N 核系统:

make -C pkg/gnu/gcc MAKE_ARGS_PARALLEL="-jN"

【讨论】:

  • 我推荐一个稳定版本(比如 2013.07)而不是主干,下载地址:ftp.gnu.org/gnu/gsrc
  • 这还会安装新版本的标准lib c++吗?
【解决方案3】:

有一次,很久以前(1992 年左右),当我购买了一个没有开发环境的 SCO 系统时,我遇到了类似的情况。将其引导到拥有完整的开发环境是一个巨大的痛苦,而且一点也不容易。在系统上拥有库头文件或 gcc 将使您的工作变得更加轻松。

这在很大程度上取决于库对安装的内容的讨厌程度。如果那里没有gcc,你的工作就会变得有点困难。如果那里没有 glibc 的头文件,那么你的工作就会困难很多。

另外,您是否在系统上获得了一个帐户,因此您有一个从登录到登录都一致的主文件夹?

如果你没有gcc,你需要找到一个gcc/g++的预编译二进制文件并安装在某个地方。如果那里没有头文件,则需要找到它们的副本并将它们放在系统上。

不过,在您的主文件夹中安装 gcc 并没有“标准”方式。所有的解决方案都将涉及到某种方式的手动滚动。

您是否问过图书馆员是否可以更改已安装的内容,因为您想学习一点编程知识并且只能访问他们的计算机来做这件事?这可能是最简单的解决方案。

从您的评论看来,您确实拥有gcc,如果您可以编译 C 代码,那么您拥有库头文件。所以现在需要实际编译你自己的g++ 版本。您可能会找到一种方法来诱使系统上的包管理器将二进制包安装在系统文件夹以外的某个位置。我认为这个解决方案没有编译你自己的解决方案那么有趣,而且我认为可能还存在一些微妙的问题,因为安装的包可能期望在特定的地方找到东西而不是在那里找到它们。

首先要做的是确保您下载了正确的 gcc 包源。找到它的地方是GNU United States mirror page。您想在您选择的镜像站点上找到gcc-4.5.0.tar.bz2gcc-4.5.0.tar.gz 文件。它可能位于gcc 目录和gcc-4.5.0 子文件夹中。

下载后,您应该解压缩它。一般来说,您不应该在解压到的文件夹中构建 gcc。因此,创建另一个您真正想要在标记为gcc-build 的同级文件夹中构建它。那么你想要的命令就是../gcc-4.5.0/configure --prefix=$HOME/.local --enable-languages='c c++'

gcc 确实需要安装一些其他软件包才能自行编译。您可以为这些软件包使用相同的 --prefix 行以将它们安装在同一个位置。 gcc 网站有一个list of pre-requisite packages

$HOME/.local 是每个用户安装事物的标准接受位置。

【讨论】:

  • 我已经安装了 gcc(我可以编译 C 代码)。另外,我有一个一致的主文件夹。我不知道在哪里可以找到预编译的 g++,我只找到了源代码,但我不知道如何处理它。我试图让他们安装它,但它没有用:)
  • @user287655 - 我会将此评论添加到您的问题中,以便进一步澄清。
  • 但不要尝试构建新版本的 GCC。根据gcc.gnu.org/install/prerequisites.html GCC 需要一个 C++98 编译器,除非您在 4.8 之前构建允许使用 C89 编译器引导的 GCC
【解决方案4】:

如果你有 fakeroot,你可以使用它来设置 ~/some-path 作为 root 来安装包。或者,您可以设置一个 chroot 环境来执行相同的操作。

鉴于此,您可以使用dpkg -i package.deb 在您的系统上安装 gcc 软件包。您需要单独下载和安装每个软件包(例如,从 debian 网站)——至少 binutilsglibclinux-headersgcc

如果您在另一个系统上,则需要为该系统获取正确的软件包并使用相应的软件包管理器进行安装。

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2014-11-29
    • 2015-09-01
    • 2017-04-12
    相关资源
    最近更新 更多