【问题标题】:How to specify older gcc version in yocto如何在 yocto 中指定较旧的 gcc 版本
【发布时间】:2020-03-05 22:49:37
【问题描述】:

我正在尝试使用 yocto(宙斯分支)为 nvidia jetson nano 板构建图像,这是我的配置:

Build Configuration:
BB_VERSION           = "1.44.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "aarch64-poky-linux"
MACHINE              = "jetson-nano"
DISTRO               = "poky"
DISTRO_VERSION       = "3.0.2"
TUNE_FEATURES        = "aarch64 armv8a crc"
TARGET_FPU           = ""
meta                 
meta-poky            
meta-yocto-bsp       = "zeus:5e1f52edb7a9f790fb6cb5d96502f3690267c1b1"
meta-python          
meta-filesystems     
meta-oe              
meta-multimedia      = "zeus:bb65c27a772723dfe2c15b5e1b27bcc1a1ed884c"
meta-tegra           = "zeus:23a9f6c12a741b4067d7a2ee601b98c766850e47"

我收到以下错误:

| /home/rui/projects/embeddeddfit/yocto/jetson-nano-build/tmp/work/armv8a_tegra210-poky-linux/cuda-samples/10.0.326-1-r0/recipe-sysroot/usr/local/cuda-10.0/include/crt/host_config.h:129:2: error: #error -- unsupported GNU version! gcc versions later than 7 are not supported!
|   129 | #error -- unsupported GNU version! gcc versions later than 7 are not supported!
|       |  ^~~~~
| Makefile:327: recipe for target 'UnifiedMemoryStreams.o' failed
| make: *** [UnifiedMemoryStreams.o] Error 1
| ERROR: oe_runmake failed
| WARNING: exit code 1 from a shell command.
| ERROR: Execution of '/home/rui/projects/embeddeddfit/yocto/jetson-nano-build/tmp/work/armv8a_tegra210-poky-linux/cuda-samples/10.0.326-1-r0/temp/run.do_compile.24230' failed with exit code 1:
| test.c:1:10: fatal error: omp.h: No such file or directory
|     1 | #include <omp.h>
|       |          ^~~~~~~
| compilation terminated.

在我看来这是一个版本兼容性问题。

在我的 local.conf 我有:

MACHINE = "jetson-nano"

LICENSE_FLAGS_WHITELIST = "commercial"

IMAGE_CLASSES += "image_types_tegra"

IMAGE_FSTYPES = "tegraflash"

GCCVERSION = "7.%"

CUDA_VERSION="10.0"

IMAGE_INSTALL_append = " cuda-samples"

指定了 7.x 版本,但 yocto 未找到任何兼容版本

NOTE: Resolving any missing task queue dependencies
NOTE: preferred version 7.% of gcc-cross-aarch64 not available (for item virtual/aarch64-poky-linux-gcc)
NOTE: versions of gcc-cross-aarch64 available: 9.2.0

如何强制 yocto 使用 7.x 版本,或者如何让 yocto 检测 7.x 版本?

【问题讨论】:

    标签: yocto nvidia-jetson


    【解决方案1】:

    这是 meta-tegra 特制酱汁。引自自述文件:

    CUDA 10 仅支持至 gcc 7,部分 NVIDIA 提供 二进制库似乎是用 g++ 7 编译的并导致链接器 使用 g++ 6 构建应用程序时失败,因此只有 gcc 7 应该 如果您打算使用 CUDA,请使用。请参阅以下 wiki 页面 在构建中包含 gcc 7 的说明:

    Using gcc7 from the contrib layer

    Using linaro gcc7 for CUDA support

    一般来说,在开始使用层时通读层自述文件是一个很好的做法。

    【讨论】:

      【解决方案2】:

      gcc 配方位于

      sources/poky/meta/recipes-devtools/gcc/
      

      如果您的版本与您想要的不同,则必须下载/制作另一个食谱。

      【讨论】:

        猜你喜欢
        • 2019-02-10
        • 2020-07-03
        • 1970-01-01
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        相关资源
        最近更新 更多