一个简单的问题 - 有没有办法让g++
链接器链接到特定的libstdc++
库版本?gcc
我在/的手册页中没有发现任何有用的信息g++
,在此处的其他问题中也没有。
情况是这样的——我的应用程序使用了一个特定的共享库,它是libstdc++.so.5
用它构建的,我想在RHEL5
. 因此,当我尝试在RHEL5
机器上构建应用程序时,我收到了警告:
warning: libstdc++.so.5, needed by ..the_shared_library_.. may conflict with libstdc++.so.6
安装compat-libstdc++
rpm 没有帮助,程序在 . 的析构函数上崩溃,std::string
因为. 所以,在这台机器上我有这个: RHEL5
[root@xxx]# ll /usr/lib/libstd*
-rwxr-xr-x 1 root root 259532 Aug 21 2006 /usr/lib/libstdc++-3-libc6.2-2-2.10.0.so
lrwxrwxrwx 1 root root 31 Jul 28 19:35 /usr/lib/libstdc++-libc6.2-2.so.3 -> libstdc++-3-libc6.2-2-2.10.0.so
lrwxrwxrwx 1 root root 18 Aug 24 15:08 /usr/lib/libstdc++.so.5 -> libstdc++.so.5.0.7
-rwxr-xr-x 1 root root 733456 Aug 21 2006 /usr/lib/libstdc++.so.5.0.7
当我做
[root@xxxx]# ldd my_exe
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00333000)
...
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00ddf000)
这很糟糕,因为我知道这是未定义的行为:/
那么,有没有办法只使用构建我的可执行文件libstdc++.so.5
?(由于许多原因,删除libstdc++.so.6
不是一种选择。静态链接也不是一种选择)。
非常感谢!