Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;11 linux服务器上不具有根访问权限的兼容编译器?_C++_Linux_Gcc_C++11_Clang - Fatal编程技术网

C++ C++;11 linux服务器上不具有根访问权限的兼容编译器?

C++ C++;11 linux服务器上不具有根访问权限的兼容编译器?,c++,linux,gcc,c++11,clang,C++,Linux,Gcc,C++11,Clang,在没有root(sudo)访问权限的linuxweb服务器上安装与c++11兼容的编译器,最简单的方法是什么?当前的gcc版本是g++(gcc)4.4.7 20120313。我已经试过了: 从头开始构建现代gcc版本(例如)。这在make期间不可避免地失败,错误如下: cp:无法统计'libgcc_.so.1':没有这样的文件或目录 从头开始构建现代的clang/llvm。这似乎可以正确编译,二进制文件可以编译非常简单的程序。但无法使用许多stdlib类或例程编译程序 有没有一种防弹(

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

  • 从头开始构建现代gcc版本(例如)。这在
    make
    期间不可避免地失败,错误如下:
cp:无法统计'libgcc_.so.1':没有这样的文件或目录

  • 从头开始构建现代的clang/llvm。这似乎可以正确编译,二进制文件可以编译非常简单的程序。但无法使用许多stdlib类或例程编译程序
有没有一种防弹(或防愚)的方法可以从头构建一个工作的编译器


或者,更好的是,有没有一种方法可以在没有root访问权限的情况下安装编译器二进制文件和标准库?

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

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

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

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

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

问题3:我是否需要根特权来编译“hello world”

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

问题4:从何处获得GCC-4.7.3或更高版本

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


没有根访问权限的管理任务通常是不可能的,但请检查您是否可以使用sudo。我想您使用的是Ubuntu的一种风格。如果可以,请使用sudo。

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

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

几位经验丰富的黑客花了不少时间才弄明白如何引导gcc。这是一项团队工作。有一点可能不太明显,那就是不同版本的
gcc
通常对特定版本的
binutils
有着非常微妙的依赖性,因此,首先,您需要引导
binutils
,而且只有在那时试着构建gcc。而且,自举
binutils
本身就有点像是在暗中操作;最终产品是否真的可以工作还不是很明显,因为,在构建新编译器之前,几乎没有什么可以做的来测试它的各个部分


然后,在最终构建了gcc之后,您将发现所有神秘的假设,但不仅仅是gcc,还有来自binutils的ld,关于标准C库和gcc自己的libstdc++的安装位置,以及如何旋转gcc不太成文的配置文件,以正确的方式调整库路径。

哪个Linux发行版ibution?在不需要root访问权限的地方检查此安装gcc。您可以在用户空间中创建一个chroot环境。要么这样做,要么确保在编译时正确设置了LD_库路径和动态链接器。看起来您编译的
clang
很好,但缺少可链接的c++11标准库。因此,请下载o然后重新编译配置为默认使用c++11标准库的
clang