使用 gcc 3.3 mips32 提升 1_49_0 错误
Posted
技术标签:
【中文标题】使用 gcc 3.3 mips32 提升 1_49_0 错误【英文标题】:boost 1_49_0 error with gcc 3.3 mips32 【发布时间】:2014-01-23 16:44:42 【问题描述】:我在 linux 上工作。 我试图从提升 1_45 传递到提升 1_49。 我的代码与两个 gcc 一起使用 boost 1_45。
我用多个编译器编译我的代码。 使用提升 1_49_0: 使用 gcc 4.4 它可以工作。 (适用于 centos 6.4 x86_64) 使用 gcc 3.3 它无法编译。使用 3.3 编译为 mips32 我在 google 中没有发现这个错误...
代码
#include <boost/unordered_set.hpp>
...
boost::unordered_set< int > po_refCombinedElements;
po_refCombinedElementsp.insert(0);
错误
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp: In instantiation of `boost::unordered::detail::default_type_pointer<std::allocator<boost::unordered::detail::ptr_node<int> >, boost::unordered::detail::ptr_node<int>*>':
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:358: instantiated from `boost::unordered::detail::allocator_traits<std::allocator<boost::unordered::detail::ptr_node<int> > >'
/rootdir/source/extlibs/boost/boost/unordered/detail/unique.hpp:107: instantiated from `boost::unordered::detail::pick_node<std::allocator<int>, int>'
/rootdir/source/extlibs/boost/boost/unordered/detail/unique.hpp:129: instantiated from `boost::unordered::detail::set<std::allocator<int>, int, boost::hash<int>, std::equal_to<int> >'
/rootdir/source/extlibs/boost/boost/unordered/unordered_set.hpp:58: instantiated from `boost::unordered::unordered_set<int, boost::hash<int>, std::equal_to<int>, std::allocator<int> >'
CrHealthAlarmContainer.cpp:43: instantiated from here
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:271: error: invalid use of undefined type `struct boost::unordered::detail::default_type_pointer<std::allocator<boost::unordered::detail::ptr_node<int> >, boost::unordered::detail::ptr_node<int>*>'
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:271: error: declaration of `struct boost::unordered::detail::default_type_pointer<std::allocator<boost::unordered::detail::ptr_node<int> >, boost::unordered::detail::ptr_node<int>*>'
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:271: error: enumerator value for `value' not integer constant
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp: In instantiation of `boost::unordered::detail::default_type_const_pointer<std::allocator<boost::unordered::detail::ptr_node<int> >, const boost::unordered::detail::ptr_node<int>*>':
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:365: instantiated from `boost::unordered::detail::allocator_traits<std::allocator<boost::unordered::detail::ptr_node<int> > >'
/rootdir/source/extlibs/boost/boost/unordered/detail/unique.hpp:107: instantiated from `boost::unordered::detail::pick_node<std::allocator<int>, int>'
/rootdir/source/extlibs/boost/boost/unordered/detail/unique.hpp:129: instantiated from `boost::unordered::detail::set<std::allocator<int>, int, boost::hash<int>, std::equal_to<int> >'
/rootdir/source/extlibs/boost/boost/unordered/unordered_set.hpp:58: instantiated from `boost::unordered::unordered_set<int, boost::hash<int>, std::equal_to<int>, std::allocator<int> >'
CrHealthAlarmContainer.cpp:43: instantiated from here
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:272: error: invalid use of undefined type `struct boost::unordered::detail::default_type_const_pointer<std::allocator<boost::unordered::detail::ptr_node<int> >, const boost::unordered::detail::ptr_node<int>*>'
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:272: error: declaration of `struct boost::unordered::detail::default_type_const_pointer<std::allocator<boost::unordered::detail::ptr_node<int> >, const boost::unordered::detail::ptr_node<int>*>'
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:272: error: enumerator value for `value' not integer constant
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp: In instantiation of `boost::unordered::detail::default_type_difference_type<std::allocator<boost::unordered::detail::ptr_node<int> >, ptrdiff_t>':
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:375: instantiated from `boost::unordered::detail::allocator_traits<std::allocator<boost::unordered::detail::ptr_node<int> > >'
/rootdir/source/extlibs/boost/boost/unordered/detail/unique.hpp:107: instantiated from `boost::unordered::detail::pick_node<std::allocator<int>, int>'
/rootdir/source/extlibs/boost/boost/unordered/detail/unique.hpp:129: instantiated from `boost::unordered::detail::set<std::allocator<int>, int, boost::hash<int>, std::equal_to<int> >'
/rootdir/source/extlibs/boost/boost/unordered/unordered_set.hpp:58: instantiated from `boost::unordered::unordered_set<int, boost::hash<int>, std::equal_to<int>, std::allocator<int> >'
CrHealthAlarmContainer.cpp:43: instantiated from here
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:275: error: invalid use of undefined type `struct boost::unordered::detail::default_type_difference_type<std::allocator<boost::unordered::detail::ptr_node<int> >, ptrdiff_t>'
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:275: error: declaration of `struct boost::unordered::detail::default_type_difference_type<std::allocator<boost::unordered::detail::ptr_node<int> >, ptrdiff_t>'
/rootdir/source/extlibs/boost/boost/unordered/detail/allocator_helpers.hpp:275: error: enumerator value for `value' not integer constant
【问题讨论】:
你有什么问题? 我的问题是为什么我得到这些错误 因为 GCC 3.3 是在 2003 年发布的? 【参考方案1】:提升requires GCC 4.5 or higher。我找不到 Boost 1.49 的引用,但这仍然是问题所在。我想他们正在使用您古老的 GCC 3.3(2003 年 5 月!)中存在缺陷的功能
【讨论】:
@davidbobo:所以,在早期的 Boost 版本中,他们不需要这些功能...... @LightnessRacesinOrbit boost 将最低要求列为gcc-3.3,但与所有非主要目标一样,不能保证所有库和功能都可用。 @davidbobo 仅仅因为 Boost.config 支持 GCC-3.3 并不意味着个别功能会。您应该升级 GCC 或获取您需要的功能支持 GCC-3.3 的版本 @LightnessRacesinOrbit 我应该改写我的评论。我在评论的发行说明中链接了我在哪里得到它。但是很明显,他们将 Boost.Config 所需的最低 GCC 版本更新为 3.3……而不是 Boost 整体。总的来说,编译 Boost 的所有功能是正确的,需要 GCC-4.5。根据具体情况,个别功能可能适用于旧版本。以上是关于使用 gcc 3.3 mips32 提升 1_49_0 错误的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 gcc 3.3+ 中以旧方式使用 __func__ ? (C++)
Linux Ubuntu使用make编译失败,提示错误127和GCC权限不够
linux pthreads 上的 gcc 4.7 - 使用 __thread 的重要 thread_local 解决方法(无提升)