gpt4 book ai didi

为 Raspberry Pi 交叉编译 C++11 代码

转载 作者:行者123 更新时间:2023-12-04 02:25:17 25 4
gpt4 key购买 nike

我正在尝试将一个大量使用 C++11 功能的大型项目移植到 Raspberry Pi。该项目使用 CMAKE,我使用 crosstool-ng 进行交叉编译。我在 Pi 上安装了依赖项并将它们复制到本地,并且我设法让 CMAKE 找到了这些。一些代码正确构建并产生 ARM 输出。但是,大多数代码都失败了,并且 GCC 输出令人困惑,我很确定这与 C++11/模板支持有关。例如,我收到这样的错误:

  • error: 'mutex' in namespace 'std' does not name a type (有问题的文件包含 ,如果我还包含 ,这个错误就会消失,不是 x86 Ubuntu 的要求)
  • error: expected class-name before '{' token ({ 之前的行是:template<typename _Res> class __basic_future : public std::__future_base)
  • error: '__result_type' does not name a type (这可能是由于上述错误而发生的)

  • 这些错误看起来就像 ARM g++ 编译器不太喜欢模板。正在使用的 g++ 版本是 arm-unknown-linux-gnueabi-g++ (crosstool-NG 1.18.0) 4.7.3 20130102 (prerelease) .

    任何人都可以指出我正确的方向吗?

    编辑:这是 ps 中的文件之一的 g++ 的样子:
    arm-unknown-linux-gnueabi-g++ -DprojectCore_EXPORTS -fPIC
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include/freetype2
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include/glib-2.0
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/lib/arm-linux-gnueabihf/glib-2.0/include
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include/gdk-pixbuf-2.0
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include/gtk-2.0
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/lib/arm-linux-gnueabihf/gtk-2.0/include
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include/cairo
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include/pango-1.0
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include/atk-1.0
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/local/include
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include/eigen3
    -I/home/sagar/workspace/RaspberryPi/target_env/usr/include/flann
    -I/home/sagar/workspace/project/include -std=c++0x -Wall -Werror -Wno-deprecated -fPIC -g -O4
    -o CMakeFiles/projectCore.dir/src/project/Core/Memory/Array2D.C.o -c /home/sagar/workspace/project/src/project/Core/Memory/Array2D.C

    最佳答案

    我认为唯一的事情是:

  • 套装-std=c++0x参数为 g++ compiler
  • 链接 pthread ( -lpthread )
  • 你必须确定你正在编译 armv6
  • 关于为 Raspberry Pi 交叉编译 C++11 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004283/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com