c++ - 树莓派工具链上的 std::shared_future

标签 c++ c++11 cross-compiling raspberry-pi

我正在尝试为 Raspberry Pi 交叉编译一个大型项目。我正在使用由 crosstool-ng 构建的工具链,gcc 版本 4.7.3。当看到 std::shared_future 时,编译会停止。我收到此错误:

test.cpp:5:27: error: aggregate 'std::shared_future<int> xxx' has incomplete type and cannot be defined

下面是产生该错误的源文件:

#include <future>

int main()
{
  std::shared_future<int> xxx;
  return 0;
}

这个相同的源文件在 Rapsberry Pi 本身上编译成功。这是 crosstool 工具链中的错误吗?有解决方法吗?我怎样才能让它成功编译?

最佳答案

要拥有 shared_future 实现类而不仅仅是前向声明,您必须使以下预处理器条件等于 true :#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) && (ATOMIC_INT_LOCK_FREE > 1)

根据您之前对@juanchopanza 的回答,似乎您的条件的以下部分等于 true :if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) 因为必须要有thread 类的实现。

最后,我们可以说这部分条件为假 ATOMIC_INT_LOCK_FREE > 1

关于c++ - 树莓派工具链上的 std::shared_future,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133977/

相关文章:

c++ - 消息处理程序 INT_PTR 返回值的目的是什么?

c++ - 在长数组中查找唯一元素会导致段错误?

c++ - 在函数中编码两个 vector

c++ - decltype 说明符的用途

android - 使用函数 gethostbyname 将 C 编译为静态链接错误

c# - 有没有一种方法可以将 typescript 定义转换为 C#,以便在 Bridge 中使用?

c++ - is_same_template 在模板别名上的奇怪行为

c++ - 将可变参数模板列表中的整数值分配给静态常量 std::array 成员

C++ 随机数没有改变

c++ - 程序入口点 __gxx_personality_sj0 无法位于...