Logo cs.nowadaytechnol.com

Jádro Linuxu 4.19 Nyní Vyžaduje Sestavení GCC 4.6 Z Důvodu Selhání Kompilace Na Starší Architektuře

Jádro Linuxu 4.19 Nyní Vyžaduje Sestavení GCC 4.6 Z Důvodu Selhání Kompilace Na Starší Architektuře
Jádro Linuxu 4.19 Nyní Vyžaduje Sestavení GCC 4.6 Z Důvodu Selhání Kompilace Na Starší Architektuře

Video: Jádro Linuxu 4.19 Nyní Vyžaduje Sestavení GCC 4.6 Z Důvodu Selhání Kompilace Na Starší Architektuře

Video: Jádro Linuxu 4.19 Nyní Vyžaduje Sestavení GCC 4.6 Z Důvodu Selhání Kompilace Na Starší Architektuře
Video: How to Compile and Run C program Using GCC on Ubuntu 18.04 LTS (Linux) / Ubuntu 20.04 LTS 2024, Březen
Anonim
Image
Image

Pro linuxové vývojáře, kteří pracují na jádře, připravované jádro Linuxu 4.19 zvyšuje minimální verzi GCC požadovanou pro vytváření jádra. Oficiální linuxové jádro uvedlo GCC 3.2 jako minimální verzi kompilátoru požadovaného pro sestavení jádra, ale linuxové jádro 4.19 to zvyšuje na GCC 4.6.

Je to proto, že různé architektury ve starších verzích GCC4 selhaly při čisté kompilaci linuxového jádra, a proto je GCC 4.6 nastaven jako minimum. Jádro také výslovně zkontroluje GCC 4.6.0 nebo novější, a pokud není nalezen, kompilátor se pokazí.

To je také výhodné pro kód jádra, protože vývojáři jádra dokázali odstranit několik desítek řádků kódu pro starší řešení GCC, která byla zaměřena na chyby kompilátoru a rozdíly v chování ve starších verzích kompilátoru.

Tato změna byla dnes sloučena těsně dříve viGit commit - a GCC 4.6.0 byl vydán v roce 2011, takže uvidíme, jestli má GCC nějaké aktualizace i v budoucnu.

Seznam změn / potvrzení pro tuto aktualizaci v podstatě specifikuje, že změna je do značné míry způsobena staršími verzemi kompilátoru GCC, které nedokázaly vytvořit jádro pod různými architekturami, jak je uvedeno níže:

Různé architektury se nedaří správně sestavit se staršími verzemi kompilátoru gcc. Příklad od Guenter Roeck ve vlákně [1]:>> V souboru zahrnutém z./include/linux/mm.h:17:0,> z./include/linux/pid_namespace.h:7,> z./include /linux/ptrace.h:10,> z arch / openrisc / kernel / asm-offsets.c: 32:>./include/linux/mm_types.h:497:16: chyba: flexibilní člen pole v jinak prázdné struktuře> > Toto je jen příklad s gcc 4.5.1 pro or32. Také jsem viděl problém> s gcc 4.4 (pro unicore32). Aktualizujte tedy minimální požadovanou verzi gcc na 4.6. [1] https://lore.kernel.org/lkml/20180814170904. [email protected]/ Různé: - Update Documentation / process / changes.rst - Odebrání a sloučení testovacích bloků verzí v kompilátoru-gcc.h pro verze nižší než 4.

Pokud jde o snahy LLVM Clang o vybudování hlavního jádra linuxového jádra x86_64, v současné době existují určité snahy, zejména v projektu LLVMLinux - i když při budování jádra prostřednictvím prostoru ARM Linuxu s Clangem již byla práce.

Doporučuje: