无法链接到共享库

时间:2020-03-06 14:48:31  来源:igfitidea点击:

我正在使用g ++ 3.3.4构建共享库。我无法链接到图书馆,因为我正在

./BcdFile.RHEL70.so: undefined symbol: _ZNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE13insert_uniqueERKj

哪个c ++ filt描述为

std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>, std::allocator<unsigned int> >::insert_unique(unsigned int const&)

我以为这可能来自使用hash_map,但我已将所有内容全部删除并切换到常规std :: map。我正在使用g ++进行链接,其中包括-lstdc ++

有人知道哪个类将实例化此模板吗?甚至更好,我需要链接到哪个库?

编辑:经过进一步审查,似乎在编译时导致添加-frepo标志,这很不幸,该标志正在解决gcc3.3错误。

解决方案

std :: _ Rb_Tree可能是一棵红黑树,很可能来自使用map。除非库所链接的libstdc ++版本与应用程序版本不同,否则它应该是libstdc ++部分的一部分,从我们到目前为止所说的看来,这似乎不太可能。

编辑:只是为了澄清,红黑树是map中的基础数据结构。 hash_map所做的只是在使用键之前对键进行哈希处理,而不是使用原始值。

尝试

#include < map >

在我们使用地图的源文件中。

我们似乎从gcc的不同版本中有2个不同的libstdc ++。so不兼容版本。检查路径。