【问题标题】:C++11 compatible compiler on linux server without root access? [duplicate]没有root访问权限的Linux服务器上的C++11兼容编译器? [复制]
【发布时间】:2014-09-08 21:04:46
【问题描述】:

在没有 root (sudo) 访问权限的 linux web 服务器上安装 c++11 兼容编译器的最简单途径是什么?当前的 gcc 版本是g++ (GCC) 4.4.7 20120313。我已经试过了:

cp: cannot stat `libgcc_s.so.1': No such file or directory"

  • 从头开始构建现代 clang/llvm。这似乎可以正确编译,并且二进制文件可以编译非常简单的程序。但无法编译使用许多 stdlib 类或例程的程序。

是否有一种防弹(或傻瓜-证明)的方法来从头构建一个工作编译器?

或者,更好的是,有没有办法安装编译器二进制文件和标准库而无需 root 访问权限?

【问题讨论】:

  • 哪个 Linux 发行版?
  • 在不需要root权限的地方安装gcc。
  • 你可以在你的用户空间中创建一个 chroot 环境。或者只是确保在编译时正确设置了 LD_LIBRARY_PATH 和动态链接器。
  • 看来你编译 clang 很好,但你缺少一个 c++11 标准库来链接。所以下载一个,然后编译和安装它。然后重新编译clang配置为默认使用c++11标准库。

标签: c++ linux gcc c++11 clang


【解决方案1】:

您的一个问题中有 4 个不同的问题:

问题 1:哪个版本的 GCC 完全支持 C11。

答案 1:据我所知,GCC 4.7.3 或更高版本提供完整的 C11 支持。

问题 2:我的 libgcc_s.so.1 或任何 libgcc*.so* 在哪里

答案2:编译器安装问题,依赖于发行版。例如,我的位于“/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/”。如果您使用的是基于包的发行版 - 查找拥有 libgcc 的包。每个发行版都必须提供搜索工具,让您可以找到哪个包拥有(包含)该库。

问题 3:我需要 root 权限来编译“hello world”吗?

答案 3:快速 - 不,您不应该或检查您的安装状态。可能有人玩过 chmod 吗?

问题 4:在哪里可以使用 GCC-4.7.3 或更高版本?

答案 4:在存储库中取决于您的发行版。 Debian 和 Ubuntu 使用 apt-get,基于 RPM 的发行版坚持使用 rpm 和 yum。我可爱的 ​​gentoo 有 eix/emerge 魔法。 Slackware 和朋友们正在使用自己的 *.TGZ 格式。

没有 root 访问权限的管理任务通常是不可能的,但请检查您是否可以 sudo。我想你使用的是 Ubuntu 的味道。如果是这样 - 使用 sudo。

【讨论】:

    【解决方案2】:

    几个 $dayjob$ 之前,其中一项任务是建立一个企业级开发平台,安装在网络文件系统上,在多个版本上提供多个版本的 gcc。

    手动构建 gcc 当然是可以的。但这很难

    需要几个经验丰富的黑客才能弄清楚如何引导 gcc。这是一个团队的努力。可能不是很明显的一件事是gcc 的不同版本通常对binutils 的特定版本有非常微妙的依赖关系,因此,首先,您需要引导binutils,并且只有then 尝试构建 gcc。而且,引导binutils 本身就有点像在黑暗中拍摄。最终产品是否真的可以工作并不是很明显,因为,在新编译器构建之前,几乎没有什么可以测试它的各个部分。

    然后,在最终构建 gcc 之后,你会发现所有神秘的假设,但不仅仅是 gcc,还有来自 binutils 的 ld,关于标准 C 库和 gcc 自己的 libstdc++ 的安装位置,以及如何玩转 gcc 的没有非常详细的配置文件,以正确的方式调整库路径只是

    【讨论】:

      猜你喜欢
      • 2016-09-16
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2013-01-17
      相关资源
      最近更新 更多