它';有可能构建libstdc++;并将其静态硬编码为给定的GCC版本?

它';有可能构建libstdc++;并将其静态硬编码为给定的GCC版本?,gcc,libstdc++,Gcc,Libstdc++,我的主要问题是,我有一个系统,官方支持的GCC版本是4.6.2/4.6.3(这取决于你是否更新),这是相当旧的,我还需要一些新的C++11功能和所有从较新的GCC版本的改进 我希望以以下方式构建GCC: libstdc++它包含在本地GCC安装中,我想这类似于“可移植”安装 GCC不会在系统内部搜索替代的libstdc++,只使用给定的和内置的libstdc++版本 即使我使用-I-L-B,一个替代文件夹碰巧包含任何给定libstdc++版本的不同安装,GCC也应该只对libstdc++版本忽

我的主要问题是,我有一个系统,官方支持的GCC版本是4.6.2/4.6.3(这取决于你是否更新),这是相当旧的,我还需要一些新的C++11功能和所有从较新的GCC版本的改进

我希望以以下方式构建GCC:

  • libstdc++
    它包含在本地GCC安装中,我想这类似于“可移植”安装
  • GCC不会在系统内部搜索替代的
    libstdc++
    ,只使用给定的和内置的
    libstdc++
    版本
  • 即使我使用
    -I
    -L
    -B
    ,一个替代文件夹碰巧包含任何给定
    libstdc++
    版本的不同安装,GCC也应该只对
    libstdc++
    版本忽略此建议
我编译GCC没有问题,但我不知道如何强制GCC按照我想要的方式运行,例如,GCC4.7.2构建总是在默认的GCC4.6.3安装上使用libstdc++,这显然是我不想要的


在构建GCC时,哪些是正确的标志可以执行此操作?

没有强制执行此类行为的构建标志
-I
ans所有其他标志都不是建议,它们是绝对要求,永远不会被忽略。如果您有足够的勇气指定一个包含不同编译器版本的头或库的搜索路径(这不可能是偶然的,因此您应该完全清楚自己在做什么),那么您完全应该承担后果


带有前缀的正常安装应该完成大部分需要的工作。使用
--prefix=/path/to/your/installation
进行配置,那么唯一要更改的就是默认的规范文件。添加一个
-rpath=/path/to/the/folder/where/your/libstdc++/sits
,您应该已经准备好了。specs文件的语法在
mangcc

中描述,我的主要问题是构建系统或用于构建的预打包脚本假定给定的gcc安装在特定路径下,换句话说,我需要它,因为当我指定CC或CXX的位置时,我不想混合来自其他地方的内容,甚至不是因为错误或任何命令。另外,rpath更像是向全局池中添加一个选项,GCC不必遵循rpath指定的内容,我经常发现这个选项非常无用。您不会把事情弄混的。没有理由发生这种事。你有任何相反的证据吗?我不知道你说的“全球池”是什么意思。我也从未经历过gcc忽略任何选项,所以我无法对此发表评论。我将接受你的答案,因为。。。好。。。这是主题,但我还没有解决我的问题。