在没有root权限的linux系统上安装gcc

32

我在公共图书馆有计算机可用,想尝试一些C++和其他代码。问题是并没有安装g++编译器,而且由于我没有root权限,无法使用软件包进行安装。是否有一种“聪明”的方法可以在本地文件夹创建一个完整的编程环境?

我已经安装了gcc(可以编译C代码)。另外,我有一个固定的主目录。我不知道哪里可以找到预编译的g++,只找到源代码但是不知道该如何处理。我曾尝试请他们安装此软件,但失败了:)


这个库安装了gcc吗? - Omnifarious
我可以使用gcc编译C源代码。 - Matthew Murdock
5个回答

12
如果您想将它安装为本地用户,
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"

4
我建议您下载稳定版本(例如2013.07)而不是开发版本,并从此链接下载:http://ftp.gnu.org/gnu/gsrc/。请注意,我的翻译会使原文更易懂,但不会改变其含义。 - canesin
这个会安装一个新版本的标准库c++吗? - Alec Jacobson

11
你可以使用 --prefix 参数运行 configure 脚本:../gcc-4.5.0/configure --prefix=/home/foo/bar。由于你的 C++ 标准库很可能与系统上的不同,因此在启动编译器编译的程序之前,你必须设置 export LD_LIBRARY_PATH=/home/foo/bar/lib

2
这取决于是否存在现有的编译器工具链来引导启动。 - reece
我尝试了 ./configure --prefix=... 但是它给了我以下错误信息:configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.." - Matthew Murdock
似乎您正在尝试在源代码树中进行构建。GCC维护者不支持此操作,他们需要将构建放在紧挨着GCC源代码的目录中。另外,您解压了哪些软件包?您需要同时安装gcc-coregcc-g++来生成C++编译器(或完整[=最大]软件包)。缺少的install-sh文件在gcc-core软件包中。 - Rudi
3
这个网站可能对于如何编译 g++ 有帮助。 - reece
如果您正在使用自己的 GMP、MPC、MPFR 和 ISL 版本,那么在构建 GCC 之前实际上需要执行此操作,因为 GCC 使用这些共享库。 - Jerry Jeremiah

2
曾经在很久以前(大约1992年左右),我也遇到过类似的情况,当时我购买了一个没有开发环境的SCO系统。将其引导到具有完整开发环境的状态是非常困难和不容易的。如果系统上有库头文件或gcc,你的工作就会变得容易得多。
这取决于库对已安装内容的要求。如果没有gcc,则你的工作会变得更加困难。如果没有glibc的头文件,则你的工作就会非常困难。
另外,你是否可以在系统上获得一个帐户,以便每次登录时都有一个一致的主目录?
如果你没有gcc,则需要找到预编译的gcc/g++二进制文件并将其安装到某个位置。如果没有头文件,则需要找到这些文件的副本并将它们放在系统上。
然而,在你的主目录中安装gcc没有“标准”的方法。所有的解决方案都需要手动操作。
你是否问过图书管理员,是否可以更改已安装的内容,因为你想学习一些编程知识,而只能使用他们的电脑来完成?这可能是最简单的解决方案。
从你的评论中看来,你确实有gcc,并且如果你可以编译C代码,你也有库头文件。现在问题就在于如何编译自己的g++版本。你可能可以找到一种方法来引导系统上的软件包管理器安装二进制软件包,而不是安装在系统文件夹中。我认为这个解决方案比编译自己的版本要少一些乐趣,而且我认为还可能存在潜在的问题,因为安装的软件包可能期望在特定的位置找到某些东西,但在那里找不到。
第一件要做的事情是确保您已经下载了正确的gcc软件包源代码。您可以在GNU美国镜像页面上找到它。您需要在所选的镜像站点上找到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网站上有一个先决条件软件包列表$HOME/.local是个人安装软件的标准接受位置。

我已经安装了gcc(我可以编译C代码)。此外,我的主文件夹是一致的。我不知道在哪里找到预编译的g++,我只找到了源代码,但我不知道该怎么做。我试图要求他们安装它,但没有成功 :) - Matthew Murdock
@user287655 - 我会在你的问题下面添加这个评论,以进一步澄清它。 - Omnifarious
但是不要尝试构建新版本的GCC。根据https://gcc.gnu.org/install/prerequisites.html,除非您正在构建早于4.8的GCC,否则GCC需要一个C++98编译器,这允许使用C89编译器进行引导。 - Jerry Jeremiah

0
如果您有fakeroot,您可以使用它将~/some-path设置为根目录,以安装软件包。或者,您可以设置chroot环境来完成相同的操作。
在此基础上,您可以使用dpkg -i package.deb在系统上安装gcc软件包。您需要单独下载和安装每个软件包(例如从debian网站)-- 至少需要binutilsglibclinux-headersgcc
如果您在另一个系统上,则需要获取该系统的正确软件包,并使用相应的软件包管理器进行安装。

0
如果您需要GCC来安装Python包,在安装之前可以尝试以下方法:
conda install gcc gxx_linux-64

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