ld.so.1:协议:致命:libstdc++.so.6:在 Solaris 11 中找不到版本“GLIBCXX_3.4.20”
Posted
技术标签:
【中文标题】ld.so.1:协议:致命:libstdc++.so.6:在 Solaris 11 中找不到版本“GLIBCXX_3.4.20”【英文标题】:ld.so.1: protoc: fatal: libstdc++.so.6: version 'GLIBCXX_3.4.20' not found in Solaris 11 【发布时间】:2018-01-31 14:08:00 【问题描述】:我在我的 solaris 11 中安装了 protobuffer,现在生成 addressbook.pb.h 和 addressbook.pb.cc 文件,我给出了下面的命令
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/addressbook.proto
但我没有得到想要的文件,而是得到了以下错误:
ld.so.1: protoc: fatal: libstdc++.so.6: version 'GLIBCXX_3.4.20' not found (required by file /export/home/shivamv/Downloads/PROTO_BUFF/protobuf-master/src/.libs/libprotobuf.so.15)
ld.so.1: protoc: fatal: libstdc++.so.6: open failed: No such file or directory
我通过以下命令检查了 libstdc++.so.6:
strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
所以我得到了这个输出:
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGT
请帮我解决这个问题:)
【问题讨论】:
【参考方案1】:这可能不是最好的解决方案,但是您可以告诉运行时链接器忽略共享库版本。
export LD_NOVERSION=1
但它对我有用。
【讨论】:
【参考方案2】:其实很简单。
致命:libstdc++.so.6:找不到版本“GLIBCXX_3.4.20”
所有信息都在告诉您,您需要 GLIBCXX,特别是版本 3.4.20(它可能支持 更高版本),但事实并非如此已安装。
libstdc++
只是标准 C++ 库,它不包含实际的 GLIBCXX 库。它只知道你需要那个库 - 或者特别是 libprotobuf
需要 - 但它没有找到它。
现在,我在 Linux 上工作,个人不知道如何在 Solaris 上安装任何东西。 看来 GLIBCXX 是 GLIBC 的一部分,which apparently needs to be built from source。但是,就像我说的,我并不特别了解 Solaris,所以我可能在这方面是错误的。
【讨论】:
CodeMouse92 :不是 glibc,而是 (gnu)lib(std)cxx → libstdc++。GLIBCXX_3.4.20
是 gcc libstdc++ 中的一个对象,从版本 4.9.0 ( libstdc++.so.6.0.20 ) 请尝试$ objdump -x /usr/lib64/libstdc++.so.6 | grep GLIBCXX_3.4.20
以上是关于ld.so.1:协议:致命:libstdc++.so.6:在 Solaris 11 中找不到版本“GLIBCXX_3.4.20”的主要内容,如果未能解决你的问题,请参考以下文章
未从 libstdc++.a(libstdc++.so.6) 导出对“_ZNSt5__padIcSt11char_traitsIcEE6_S_padERSt8ios_basecPcPKcllb”符号的
XGBoost遇到“Error message(s): [“/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘”错误解决案例
Qt编译时MinGW去掉对gcc动态库的依赖(去掉对libgcc_s_dw2-1.dll,libstdc++-6.dll的依赖)