无法链接到共享库

问题描述:

我正在用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错误。

+0

那么,你有没有想过它? – Dima 2008-10-01 19:03:41

std::_Rb_Tree可能是一棵红黑树,很可能来自使用map。它应该是libstdc++的一部分,除非你的库链接到的应用程序的版本不同于libstdc++,从目前为止你所说的看起来似乎不大可能。

编辑:只是为了澄清,红黑树是map中的基础数据结构。 hash_map所做的就是在使用它之前对密钥进行散列,而不是使用原始值。

尝试使用地图的源文件中的

#include < map >

+0

缺少#include会导致编译时错误,而不是链接时间错误。 – KeithB 2008-09-30 13:22:50

您似乎有两个不同版本的libstdC++。因此来自不同版本的gcc。检查你的路径。