CUDA 10 不支持 7 之后的 Gcc 版本 - Arch Linux 中的 Qt 错误

问题描述 投票:0回答:2

我正在运行 Arch Linux 并尝试在 Qt 中构建一个项目,但是,Qt 出现以下错误:

/opt/cuda/include/crt/host_config.h:129:错误:#error——不支持的 GNU 版本!不支持 7 之后的 gcc 版本!

我已经尝试过之前在 Stack Overflow 上找到的帖子中的建议:

CUDA 与我的 gcc 版本不兼容

我没有使用确切的命令,因为我的 cuda 位于 /opt/cuda/bin/gcc 中。我对 g++ 执行了相同的命令。但是,终端输出这些文件已经链接。我确实通过查看实际文件并查看其属性来确认这一点。

有人可以建议解决我的问题吗?

qt gcc cuda g++ archlinux
2个回答
11
投票

我设法使用这两行来做到这一点,这将更新 cuda 到 gcc7 的符号链接

ln -s /usr/bin/gcc-7 /usr/local/cuda/bin/gcc
ln -s /usr/bin/g++-7 /usr/local/cuda/bin/g++

5
投票

问题来自 CUDA-10 主目录树中的 cuda-10.0/targets/x86_64-linux/include/crt/host_config.h。您的架构的目标放置在 /opt 中。

一些帖子建议伪造不平等

    if __GNUC__ > 7

    if __GNUC__ > 8

但这是一个坏主意。使用

    make 'NVCCFLAGS=-m64 -D__GNUC__=7' -k

在某些微不足道的情况下是允许的,但本质上仍然是相同的糟糕黑客行为。

您的系统上可能有替代品,它构建了指向版本 8 gnu 工具链文件的符号链接。这就是为什么您会看到版本 7 已安装的指示。

您可以了解如何仅修改开发人员用户的替代帐户,但不能修改 root 或任何系统管理员帐户的替代帐户。您可能想记住如何在 7 和 8 之间来回切换,这样您只在实际需要时使用 7,因为许多其他东西可能只能使用 8 进行测试。

如果这对您不起作用,您可以从源代码构建 gcc-7。准备性系统管理工作包括 dnf 安装、从源代码构建、安装 7.4 gnu 编译器以及一组仅用于 CUDA 开发的路径。如果您安装了带有适当标准库的 gnu gcc 和 g++ 版本 8 并且它可以工作,则可以相对轻松地安装版本 7 编译器。

浏览并找到 https://gcc.gnu.org/mirrors.html 上列出的最近的镜像,然后复制 gcc-7.4.0.tar.xz 的链接位置并将其放置在 shell 变量 u 中,如下所示示例。

    u="http://mirrors.concertpass.com/gcc/releases/gcc-7.4.0/gcc-7.4.0.tar.xz"

然后你就可以按照命令完成剩下的事情了。

    sudo dnf install libmpc-devel
    cd
    mkdir -p scratch
    cd scratch
    wget -O - "$u" |tar Jxf -
    cd gcc-7.4.0
    mkdir build
    cd build
    ../configure --prefix=/usr/local/gcc-7
    make
    sudo bash -c "cd \"`pwd`\"; make install"

然后您可以在您开发的 shell 和工具中执行此操作。出于与上述相同的原因,请勿将其放入系统登录设备或 .bashrc 或 .bash_profile 中。其他的事情只能用版本 8 进行测试。相反,请将它们放置在它们所属的开发环境中。

    LD_LIBRARY_PATH=/usr/local/gcc-7/lib64:$LD_LIBRARY_PATH
    LD_LIBRARY_PATH=/usr/local/gcc-7/lib:$LD_LIBRARY_PATH
    LD_LIBRARY_PATH=/usr/local/cuda-10.0/NsightCompute-1.0/host/linux-desktop-glibc_2_11_3-glx-x64/Plugins:$LD_LIBRARY_PATH
    LD_LIBRARY_PATH=/usr/local/cuda-10.0/NsightCompute-1.0/target/linux-desktop-glibc_2_11_3-glx-x64:$LD_LIBRARY_PATH
    LD_LIBRARY_PATH=/usr/local/cuda-10.0/targets/x86_64-linux/lib/stubs:$LD_LIBRARY_PATH

    PATH=/usr/local/gcc-7/bin:$PATH
    PATH=/usr/local/cuda-10.0/bin:$PATH
    PATH=$HOME/big/cuda.samples/NVIDIA_CUDA-10.0_Samples/bin/x86_64/linux/release:$PATH
© www.soinside.com 2019 - 2024. All rights reserved.