Linux 4.19 커널은 이제 이전 아키텍처의 컴파일 실패로 인해 GCC 4.6을 빌드해야합니다.

Linux-Unix / Linux 4.19 커널은 이제 이전 아키텍처의 컴파일 실패로 인해 GCC 4.6을 빌드해야합니다. 1 분 읽기

Linux Kernel Organization, Inc.



커널에서 작업하는 Linux 개발자의 경우 출시 예정인 Linux 4.19 커널은 커널 빌드에 필요한 GCC 최소 버전을 올립니다. 공식 Linux 커널은 GCC 3.2를 최저한의 커널 빌드에 필요한 컴파일러 버전이지만 Linux 커널 4.19에서는이를 GCC 4.6으로 올립니다.

이전 GCC4 릴리스의 다양한 아키텍처가 Linux 커널을 깔끔하게 컴파일하지 못했기 때문에 GCC 4.6이 최소값으로 설정되었습니다. 커널은 또한 GCC 4.6.0 이상을 명시 적으로 확인하며 찾을 수없는 경우 컴파일러에서 오류가 발생합니다.



이는 커널 개발자가 이전 컴파일러 릴리스의 컴파일러 버그 및 동작 차이를 겨냥한 이전 GCC 해결 방법을 위해 수십 줄의 코드를 제거 할 수 있었기 때문에 커널 코드에도 유용합니다.



이 변경 사항은 오늘 바로 Git 커밋을 통해 병합되었으며 GCC 4.6.0은 2011 년에 출시되었으므로 GCC에 향후 업데이트가 있는지 확인할 수 있습니다.



이 업데이트에 대한 변경 로그 / 커밋은 기본적으로 GCC 컴파일러의 이전 버전이 다양한 아키텍처에서 커널을 빌드하지 못했기 때문에 변경이 거의 전적으로 발생한다고 지정합니다.

 다양한 아키텍처는 이전 버전의 gcc 컴파일러에서 제대로 빌드되지 않습니다. 스레드 [1]의 Guenter Roeck의 예 :>> In file included from ./include/linux/mm.h:17:0,> from ./include/linux/pid_namespace.h:7,> from ./include /linux/ptrace.h:10,> from arch / openrisc / kernel / asm-offsets.c : 32 :> ./include/linux/mm_types.h:497:16 : error : flexible array member in other empty struct> > 이것은 or32에 대한 gcc 4.5.1의 예일뿐입니다. 나는 gcc 4.4 (unicore32의 경우)에서도 문제를 보았습니다. 따라서 최소 필수 버전의 gcc를 4.6으로 업데이트하십시오. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ 여러 가지 잡다한: -문서 / 프로세스 / 변경 사항 .rst 업데이트-4.6 미만 버전의 경우 compiler-gcc.h에서 버전 테스트 블록 제거 및 통합

메인 라인 Linux x86_64 커널을 구축하기위한 LLVM Clang의 노력과 관련하여, 특히 LLVMLinux 프로젝트에서 Clang을 사용하여 ARM Linux 공간을 통해 커널을 구축하는 데 약간의 작업이 있었음에도 불구하고 현재 노력에 지체가 있습니다.