在没有root(sudo)访问的linux web服务器上安装c ++ 11兼容编译器的最简单方法是什么?当前的gcc版本为g++ (GCC) 4.4.7 20120313
。我已经尝试过了:
make
期间不可避免地失败,并出现如下错误: cp: cannot stat `libgcc_s.so.1': No such file or directory"
是否有从头开始构建工作编译器的防弹(或傻瓜 - 防护)方法?
或者,更好的是,有没有办法在没有root访问权限的情况下安装编译器二进制文件和标准库?
答案 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的未记录的配置文件,以正确的方式调整 中的库路径。