Вопрос: Каково пошаговое решение для применения патча gcc, в частности, когда он устанавливается через apt? (Я хочу применить упомянутый здесь)
Я пытался следовать нескольким руководствам о том, как исправить gcc, но они либо полагаются на то, что gcc был установлен через исходный код, либо через git. Кроме того, для менее опытных пользователей крайне запутанно, ЧТО это за патч/какой это файл/как он выглядит, как его получить из отчета об ошибке и как его применить. При выполнении шагов, описанных в руководствах, я либо получаю сообщение об ошибке, что загруженный патч не может быть правильно проанализирован, либо ничего не происходит. Является это патч?
Задний план: В gcc 10.3 есть ошибка: «Сбой компилятора из-за ошибки сегментации в хронобиблиотеке с использованием nvcc» (см. сообщение об ошибке ниже). Патч, упомянутый в отчете об ошибке, не включен в версию, поставляемую с apt. Поэтому Ubuntu 20.04 (возможно, 21.04, а также другие дистрибутивы Linux) поставляется со сломанной версией, так что код CUDA не может быть скомпилирован. Обратите внимание, что ошибка должна быть исправлена в gcc 11, но это кажется, не поддерживается CUDA.
Сообщение об ошибке:
/usr/include/c++/10/chrono: вместо âtemplate<class _Rep, class _Period> template<class _Period2> с использованием __is_harmonic = std::__bool_constant<(std::ratio<((_Period2::num / std::chrono::duration<_Rep, _Period>::_S_gcd(_Period2::num, _Period::num)) * (_Period::den / std::chrono::duration<_Rep, _Period>::_S_gcd (_Period2::день, _Period::день))), ((_Period2::день / std::chrono::duration<_Rep, _Period>::_S_gcd(_Period2::день, _Period::ден)) * ( _Period::num / std::chrono::duration<_Rep, _Period>::_S_gcd(_Period2::num, _Period::num)))>::den == 1)> [с _Period2 = _Period2; _Rep = _Rep; _Период = _Период] :
/usr/include/c++/10/chrono:473:154: требуется отсюда
/usr/include/c++/10/chrono:428:27: внутренняя ошибка компилятора: ошибка сегментации
428 | _S_gcd(intmax_t __m, intmax_t __n) нет кроме
| ^~~~~~
Пожалуйста, отправьте полный отчет об ошибке,
с предварительно обработанным исходным кодом, если это необходимо.
Инструкции см. в <file:///usr/share/doc/gcc-10/README.Bugs>.
ниндзя: сборка остановлена: подкоманда не удалась.
Что я пробовал до сих пор:
- полная очистка всего, что связано с Nvidia/CUDA, и переустановка (я пробовал версии CUDA 11.2, 11.3, 11.4)
- обновление до gcc-11 g++-11, но это кажется, не поддерживается CUDA
- пропатчил gcc, но у меня либо не получилось, либо это ничего не дает
- переход на gcc-9 решает проблему, но, на мой взгляд, это не долгосрочное решение.
Связанный: