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

时间:2018-11-16 19:35:01

标签: qt gcc cuda g++ archlinux

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

  

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

我已经尝试过以前的堆栈溢出帖子中的建议:

CUDA incompatible with my gcc version

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

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

2 个答案:

答案 0 :(得分:3)

我设法使用了这两行,这会将cuda的符号链接更新为gcc7

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

答案 1 :(得分:1)

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

有些帖子建议伪造不平等现象

object WhitelistedByZoneAttachmentConstraint : AttachmentConstraint {
override fun isSatisfiedBy(attachment: Attachment): Boolean {
    return if (attachment is AttachmentWithContext) {
        System.out.print("--attachment--"+attachment.id.toString())
        val whitelist = attachment.whitelistedContractImplementations
                ?: throw IllegalStateException("Unable to verify WhitelistedByZoneAttachmentConstraint - whitelist not specified")
        System.out.print("--whitelist--"+whitelist.toString())
        attachment.id in (whitelist[attachment.stateContract] ?: emptyList())
    } else false
}

    if __GNUC__ > 7

但这是一个坏主意。使用

    if __GNUC__ > 8
在某些琐碎的情况下,

是允许的,但从根本上讲,还是同样的错误。

您的系统上可能有备用服务器,该备用服务器已经构造了指向版本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中,如本例所示。

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

然后您可以将其余内容作为命令来完成。

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

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

    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"