최근 데비안의 불안정한 저장소에서 gcc-5가 제거된 것 같습니다. 이전 Linux 커널(3.19)을 컴파일하려면 gcc-5가 필요하므로 소스에서 빌드하고 싶지만 이로 인해 많은 문제가 발생합니다. 나는 내가 찾은 지침을 따랐습니다.여기, 그런데 어떤 설정을 해야 하는지 궁금합니다. 지금까지 나는 다음을 수행했습니다.
- 소스코드를 다운로드하고 압축을 푼다.
- 다음을 수행하여 gcc-5를 구성합니다.
% mkdir objdir
% cd objdir
% ../gcc-5.4.0/configure (I included neither options nor target flags)
objdir
내 디렉토리에 다음을 사용하여 빌드하려고 합니다.
% make BOOT_CFLAGS='-O' bootstrap
그런데 부팅 과정에서 오류가 발생하여 설치를 계속할 수 없었습니다. 약 5분 정도 실행한 후 다음과 같은 오류가 발생했습니다.
In file included from ../../../../gcc-5.4.0/libgcc/unwind-dw2.c:401:0:
./md-unwind-support.h: In function 'x86_fallback_frame_state':
./md-unwind-support.h:141:18: error: field 'uc' has incomplete type
struct ucontext uc;
^
make[5]: *** [../../../../gcc-5.4.0/libgcc/shared-object.mk:14: unwind-dw2.o] Error 1
make[5]: Leaving directory '/home/me/objdir/x86_64-unknown-linux-gnu/32/libgcc'
make[4]: *** [Makefile:1154: multi-do] Error 1
make[4]: Leaving directory '/home/me/objdir/x86_64-unknown-linux-gnu/libgcc'
make[3]: *** [Makefile:119: multi-do] Error 2
make[3]: Leaving directory '/home/me/objdir/x86_64-unknown-linux-gnu/libgcc'
make[2]: *** [Makefile:16510: all-stage1-target-libgcc] Error 2
make[2]: Leaving directory '/home/me/objdir'
make[1]: *** [Makefile:22461: stage1-bubble] Error 2
make[1]: Leaving directory '/home/me/objdir'
make: *** [Makefile:22798: bootstrap] Error 2
저는 Debian 10(Buster)을 실행 중이고 나열된 필수 필수 구성 요소를 설치했습니다.여기.
부팅 중에 발생하는 오류를 수정하거나 일반적으로 소스에서 빌드하는 등 도움이나 지침을 주시면 대단히 감사하겠습니다! 감사해요.
답변1
그 이유는 glibc가 변경되어 이전 컴파일러와의 호환성이 손상되었기 때문입니다. 이있다수리하다해당 컴파일러의 경우. 패치는 파일에서 struct ucontext
, where 등으로 대체됩니다.ucontext_t
libgcc/config/<arch>/linux-unwind.h
<arch>
i386
aarch64
alpha
비슷한 것이 있습니다스택오버플로우에 대한 질문.
이러한 수정 사항 외에도 다음의 새니타이저 코드도 수정해야 합니다.여기(이것들 중 일부는 충분합니다) 그리고여기.
그런 다음 마침내 GCC가 구축되었습니다.