小编Chr*_*eck的帖子

如何安装使用相应 C++ 标准库的新版本 G++?

我正在尝试安装多个版本的 g++ 编译器以进行测试。

我想能够安装g++ 4.9.35.1.05.2.0,和6.1.0

我知道我能做到

sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y;
sudo apt-get update -qq
sudo apt-get install g++-4.9, g++5.1, g++5.2, g++6
Run Code Online (Sandbox Code Playgroud)

但是在我的测试中,它们最终都使用了系统安装的标准库,即g++-4-series 标准库。我可以说是因为当我编译代码时,标准库并没有做一些 C++11 标准说它应该做的事情,例如,std::string移动构造函数没有被标记为noexcept。但是在具有 gcc-6 标准库的 ubuntu-xenial 上,它是,并且其他相关问题已解决。

我可以看到libstdc++-4.8-dev在 ubuntu 存储库中有例如命名的包,但是当我安装较新的编译器时,它们似乎没有使用它们。

我也知道我可以在我的主目录中从源代码安装编译器,但是构建它们需要很长时间,travis-ci不幸的是我无法在其中完成。在 travis-ci 中,所有构建都会在一小时后超时。

有没有一种简单的方法可以配置从 ppa 安装的编译器以使用正确版本的 C++ 标准库,即它们发布的版本而不是系统默认版本?

有没有一种简单的方法可以使用不涉及从源代码构建的 apt-get 将编译器二进制文件及其所有关联的库安装到我的主目录中的文件夹中?

我找到了这些说明,上面说我可以使用-rpath标志或规格文件,或者调整LD_LIBRARY_PATH,但我不确定我应该设置哪些路径。另一个问题是,它不仅仅是动态链接器,ubuntu-toolchain-r/test编译器似乎libstdc++也在使用系统头文件,所以我需要以某种方式纠正它。


我目前的策略是,只下载源代码发布 tarball 并尝试摆弄配置标志,直到我能找到一种在 < 60 分钟内构建它的方法。一旦我让它构建一次,它就在我的“缓存”目录中,所以我项目的未来构建可以在 < 1 …

apt compiling c++ g++ 12.04

5
推荐指数
1
解决办法
1107
查看次数

标签 统计

12.04 ×1

apt ×1

c++ ×1

compiling ×1

g++ ×1