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

ecfsfe2w  于 4个月前  发布在  Linux
关注(0)|答案(2)|浏览(61)

我正在运行Arch Linux,并试图在Qt中构建一个项目,然而,Qt吐出以下错误:
/opt/cuda/include/crt/host_config.h:129:error:#error -- unsupported GNU version!gcc版本超过7不支持!
我已经尝试了以前的Stack Overflow帖子中的一个建议:
CUDA incompatible with my gcc version
我没有使用确切的命令,因为我的cuda位于/opt/cuda/bin/gcc中。我对g++执行了相同的命令。然而,终端输出这些文件已经链接。我确实通过查看实际文件并查看其属性来确认这一点。
有人能为我的问题提出解决方案吗?

wgxvkvu9

wgxvkvu91#

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

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

字符串

x6yk4ghg

x6yk4ghg2#

该问题来自CUDA-10主目录树中的cuda-10.0/targets/x86_64-linux/include/crt/host_host.h。您的架构的目标位于/opt中。
一些帖子建议伪造不平等

if __GNUC__ > 7

字符串

if __GNUC__ > 8


但这不是个好主意

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


在一些琐碎的情况下是允许的,但从根本上说仍然是同样的坏黑客。
你的系统上可能有替代程序,它构造了指向gnu工具链版本8文件的符号链接,这就是为什么你会得到一个版本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

相关问题