Linux服务器上没有root访问权限的C ++ 11兼容编译器?

时间:2014-09-08 21:04:46

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

在没有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访问权限的情况下安装编译器二进制文件和标准库?

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

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

手动构建gcc当然是可能的。但它很难

需要几位经验丰富的黑客才能弄清楚如何引导gcc。这是团队的努力。可能不是很明显的一件事是gcc的不同版本通常对binutils的特定版本具有非常微妙的依赖性,因此,首先,您需要引导binutils,并且只有然后尝试构建gcc。而且,引导binutils本身就是在黑暗中的一个镜头;最终产品是否真正起作用并不是很明显,因为,在新编译器构建之前,可以做很少的事情来测试它的各个部分。

然后,在最终获得gcc之后,你会发现所有神秘的假设,但不仅仅是gcc,而是来自binutils的ld,关于标准C库和gcc自己的libstdc ++的安装位置,以及如何扭曲gcc的未记录的配置文件,以正确的方式调整 中的库路径。