Întrebare: Care este soluția pas cu pas pentru a aplica un patch gcc, în special atunci când este instalat prin apt? (Vreau să aplic pe cel menționat Aici)
Am încercat să urmez mai multe ghiduri despre cum să corectez gcc, dar fie se bazează pe faptul că gcc a fost instalat prin sursă, fie prin git. În plus, pentru utilizatorii mai puțin experimentați, este extrem de confuz CE este patch-ul/ce fișier este/cum arată, cum să îl obțineți din raportul de eroare și cum să îl aplicați. Când urmez pașii descriși în ghiduri, fie primesc o eroare că patch-ul descărcat nu poate fi analizat corect, fie nu pare să se întâmple nimic. Este acest plasturele?
Fundal: Există o eroare în gcc 10.3: „Compilatorul se blochează cu o eroare de segmentare pe o bibliotecă de cronograme folosind nvcc” (vezi mesajul de eroare de mai jos). Patch-ul menționat în raportul de eroare nu este inclus în versiunea care vine cu apt. Prin urmare, Ubuntu 20.04 (eventual 21.04, precum și alte distribuții Linux) sunt livrate cu versiunea deteriorată, astfel încât codul CUDA nu poate fi compilat. Rețineți că eroarea ar trebui să fie remediată în gcc 11, dar aceasta pare nesusținut de CUDA.
Mesaj de eroare:
/usr/include/c++/10/chrono: În înlocuirea âtemplate<class _Rep, class _Period> template<class _Period2> folosind __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::den, _Period::den))), ((_Period2::den / std::chrono::duration<_Rep, _Period>::_S_gcd(_Period2::den, _Period::den)) * ( _Period::num / std::chrono::duration<_Rep, _Period>::_S_gcd(_Period2::num, _Period::num)))>::den == 1)> [cu _Period2 = _Period2; _Rep = _Rep; _Period = _Period]â:
/usr/include/c++/10/chrono:473:154: necesar de aici
/usr/include/c++/10/chrono:428:27: eroare internă a compilatorului: eroare de segmentare
428 | _S_gcd(intmax_t __m, intmax_t __n) noexcept
| ^~~~~~
Vă rugăm să trimiteți un raport complet de eroare,
cu sursă preprocesată dacă este cazul.
Consultați <file:///usr/share/doc/gcc-10/README.Bugs> pentru instrucțiuni.
ninja: build stopped: subcomandă eșuată.
Ce am incercat pana acum:
- curățarea completă a tot ceea ce are legătură cu Nvidia/CUDA și reinstalarea (am încercat versiunile CUDA 11.2, 11.3, 11.4)
- upgrade la gcc-11 g++-11, dar asta pare nesusținut de CUDA
- patching gcc, dar fie am eșuat, fie asta nu pare să facă nimic
- downgrade-ul la gcc-9 rezolvă problema, dar nu este o soluție pe termen lung, în opinia mea
Legate de: