1

我在我的 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

请帮我解决这个问题:)

4

2 回答 2

2

它可能不是最好的解决方案,但是您可以告诉运行时链接器忽略共享库版本。

export LD_NOVERSION=1

但它对我有用。

于 2018-02-01T12:18:42.407 回答
1

实际上,这很简单。

致命:libstdc++.so.6:未找到版本“GLIBCXX_3.4.20”

该消息告诉您的是您需要GLIBCXX,特别是版本 3.4.20 (它可能支持更高版本),但尚未安装。

libstdc++只是标准的 C++ 库,它不包括实际的 GLIBCXX 库。它只知道你需要那个库——或者特别是需要那个库——libprotobuf但它没有找到它。


现在,我在 Linux 上工作,个人不知道如何专门在 Solaris 上安装任何东西。GLIBCXX似乎是 GLIBC 的一部分,显然需要从 source 构建。但是,就像我说的那样,我并不特别了解 Solaris,所以我在这方面可能是错的。

于 2018-01-31T14:56:30.190 回答