Проблема возникает из-за 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