我有以下设置。
在/usr/lib下安装了libstdc++ (旧版)的redhat 4机器,在默认位置安装了旧版本的gcc。
我们还在另一个目录下安装了较新版本的libstdc++和较新版本的gcc 4.4.5。
当我使用4.4.5构建程序并尝试运行时,我收到错误消息,表明我使用的是较旧版本的libstdc++。
有没有一种方法可以使新的编译器链接到安装在/usr/ libstdc++中的系统lib上,而不是它附带的那个。
提前感谢
发布于 2012-01-03 01:28:04
(我知道这是一个老问题,这是给谷歌同事的)
看来,gcc和它的标准包含和标准库是紧密相连的。它们的路径甚至被硬编码在gcc可执行文件中,所以除非被覆盖,否则gcc vX应该自动选择它自己构建的相应文件(包括+标准库)(在构建之前./configure命令中的选项--前缀)。
gcc标准的C++库是随gcc一起提供的,并使用相同的命令构建。
因此,不可能/不建议使用不匹配的标准库和编译器版本,除非幸运的是更改很小。
发布于 2011-01-11 00:41:01
为什么要让新的编译器链接到旧的libstdc++?问题听起来像是新的编译器已经在使用旧的库了,因为它不知道它在哪里。在LD_LIBRARY_PATH中指定路径。
export LD_LIBRARY_PATH="/path/to/my/new/lib:${LD_LIBRARY_PATH}"https://stackoverflow.com/questions/4649079
复制相似问题