Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 哪个版本的libstdc++;。那么。6用什么呢?_C++_Solaris_Libstdc++ - Fatal编程技术网

C++ 哪个版本的libstdc++;。那么。6用什么呢?

C++ 哪个版本的libstdc++;。那么。6用什么呢?,c++,solaris,libstdc++,C++,Solaris,Libstdc++,我正在Solaris上使用第三方共享库(libsw_api.so),当我尝试加载时,会产生以下错误: fatal: relocation error: file libsw_api.so: symbol _ZNKSt9bad_alloc4whatEv: referenced symbol not found The program exited with error code 1 当我在LIWSWIAPAPI上运行LDD时,所有的引用似乎都被满足了,特别是指向LIbSTDC++的C++标准库。

我正在Solaris上使用第三方共享库(libsw_api.so),当我尝试加载时,会产生以下错误:

fatal: relocation error: file libsw_api.so:
symbol _ZNKSt9bad_alloc4whatEv: referenced symbol not found
The program exited with error code 1

当我在LIWSWIAPAPI上运行LDD时,所有的引用似乎都被满足了,特别是指向LIbSTDC++的C++标准库。

glispa02(fostopr)$ ldd libsw_api.so
...
libstdc++.so.6 =>        /usr/sfw/lib/libstdc++.so.6
...
glispa02(fostopr)$ ls -l /usr/sfw/lib/libstdc++.so.6
lrwxrwxrwx   1 root     root          18 Jun 21  2010 /usr/sfw/lib/libstdc++.so.6 -> libstdc++.so.6.0.3
但是,该库不导出_ZNKSt9bad_alloc4whatEv

glispa02(fostopr)$ nm /usr/sfw/lib/libstdc++.so.6 | grep bad_alloc                          
[7592]  |    752340|      64|FUNC |GLOB |0    |2653   |_ZNSt9bad_allocD0Ev
[7324]  |    752284|      56|FUNC |GLOB |0    |2652   |_ZNSt9bad_allocD1Ev
[8077]  |    752228|      56|FUNC |GLOB |0    |2651   |_ZNSt9bad_allocD2Ev
[7519]  |    356736|      76|FUNC |GLOB |0    |473    |_ZSt17__throw_bad_allocv
[7341]  |    983588|      12|OBJT |WEAK |0    |3842   |_ZTISt9bad_alloc
[6569]  |    777008|      13|OBJT |WEAK |0    |3317   |_ZTSSt9bad_alloc
[7299]  |    983568|      20|OBJT |WEAK |0    |3841   |_ZTVSt9bad_alloc
有什么问题吗?错误的版本?我对UNIX上的C++不太好,所以我很感激任何帮助。 SPARC32PLUS与SPARC不匹配是否是问题的原因

glispa02(fostopr)$ file libsw_api.so        
libsw_api.so:   ELF 32-bit MSB dynamic lib SPARC32PLUS Version 1, V8+ Required,    dynamically linked, not stripped
glispa02(fostopr)$ file /usr/sfw/lib/libstdc++.so.6.0.3 
/usr/sfw/lib/libstdc++.so.6.0.3:        ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped, no debugging information available
我的系统:

glispa02(fostopr)$ cat /etc/release                    
                  Solaris 10 10/09 s10s_u8wos_08a SPARC
       Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
                    Use is subject to license terms.
                       Assembled 16 September 2009
glispa02(fostopr)$ uname -a
SunOS glispa02 5.10 Generic_141444-09 sun4u sparc SUNW,SPARC-Enterprise

如果您在
libstdc++.so.6
文件上使用pvs,它将为您提供一组匹配的条目:
GLIBCXX
,如果您没有匹配
GLIBCXX_3.4.9
,那么符号
bad_alloc::what
不在该库中,即库比依赖对象
libsw_api.so


如果是这种情况,那么您可能需要一个更新版本的libstdc++-它将附带一个更新版本的g++

嗨,我也在升级这些文件,我注意到我应该使用发行版附带的libstdc++.so.6.0.9文件,而不是/usr/sfw/lib/

中的文件。我遇到了同样的问题

原因是我们导出了错误的LD_库路径 因此,我们的共享库链接到原始的gcc库(3.3),而不是我们的编译器(GCC4.4)


修复链接器问题应该可以解决这个问题

我想知道一个libstdc++是否有
bad\u alloc::what
从头中内联,并且libsw\u api是针对不同的libstdc++编译的。可能使用不同的优化设置,OP的源代码将使用
what()
内联进行编译?只是一个猜测…pvs输出:
libgcc_.so.1(GCC_3.3)
libc.so.1(SUNW_1.22,SUNWprivate_1.1)。我将尝试升级g++,谢谢!我想我现在更了解你的评论了,你想知道libstdc++.6提供了哪些接口,而不是它所依赖的,对吗?当我执行
pvs-d/usr/sfw/lib/libstdc++.so.6时,我根本没有得到任何输出。为什么?