Версии Gcc после 7 не поддерживаются CUDA 10 - Qt Error в Arch Linux - PullRequest
0 голосов
/ 16 ноября 2018

Я использую Arch Linux и пытаюсь собрать проект в Qt, однако Qt выдает следующую ошибку:

/ opt / cuda / include / crt / host_config.h: 129: ошибка: #error - неподдерживаемая версия GNU! Версии gcc более 7 не поддерживаются!

Я уже попробовал предложение из предыдущего поста переполнения стека, найденного здесь:

CUDA несовместимо с моей версией gcc

Я не использовал точную команду, так как моя cuda находится в / opt / cuda / bin / gcc. Я сделал ту же команду для g ++. Однако терминал выводит, что эти файлы уже связаны. Я подтвердил это, перейдя к самому файлу и просмотрев его свойства.

Может кто-нибудь предложить решение моей проблемы?

1 Ответ

0 голосов
/ 18 декабря 2018

Проблема возникает из-за cuda-10.0 / target / x86_64-linux / include / crt / host_config.h в главном дереве каталогов CUDA-10. Цель для вашей архитектуры была помещена в /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, сборку из исходного кода, установку компилятора gnu 7.4 и набор путей только для разработки CUDA. Если у вас установлены gnu gcc и g ++ версии 8 с соответствующими стандартными библиотеками, и он работает, компилятор версии 7 можно установить с относительной легкостью.

Просмотрите и найдите ближайшее зеркало, указанное в https://gcc.gnu.org/mirrors.html, а затем скопируйте расположение ссылки для gcc-7.4.0.tar.xz и поместите его в переменную оболочки 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"

Затем вы выполняете это в оболочках и инструментах, которые вы разрабатываете. НЕ помещайте это в устройство входа в систему или в .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
...