Linux From Scratch - Version 12.1-systemd
Chapter 6. Cross Compiling Temporary Tools
이전	위로 / 처음으로	다음
Binutils-2.42 - Pass 2	Entering Chroot and Building Additional Temporary Tools

6.18. GCC-13.2.0 - 2차 설치

GCC 패키지에는 C 컴파일러와 C++ 컴파일러가 포함된 GNU 컴파일러 컬렉션이 포함되어 있습니다.

대략적인 빌드 시간입니다: 4.4 SBU
필요한 디스크 공간: 4.8 GB

6.18.1. GCC 설치

GCC의 첫 번째 빌드에서와 마찬가지로 GMP, MPFR 및 MPC 패키지가 필요합니다. 타르볼의 압축을 풀고 필요한 디렉터리로 이동합니다.

x86_64에서 빌드하는 경우 64비트 라이브러리의 기본 디렉터리 이름을 “lib”로 변경합니다.

POSIX 스레드를 지원하는 라이브러리를 빌드할 수 있도록 libgcc 및 libstdc++ 헤더의 빌드 규칙을 재정의합니다.

별도의 빌드 디렉터리를 다시 생성합니다.

GCC 빌드를 시작하기 전에 기본 최적화 플래그를 재정의하는 환경 변수를 설정 해제해야 합니다.

이제 컴파일을 위해 GCC를 준비합니다.

새로운 구성 옵션의 의미입니다:

–with-build-sysroot=$LFS
일반적으로 –host를 사용하면 크로스 컴파일러가 GCC 빌드에 사용되며, 해당 컴파일러는 $LFS에서 헤더와 라이브러리를 찾아야 한다는 것을 알고 있습니다. 그러나 GCC용 빌드 시스템은 이 위치를 인식하지 못하는 다른 도구를 사용합니다. 이 스위치는 이러한 도구가 호스트가 아닌 $LFS에서 필요한 파일을 찾도록 하기 위해 필요합니다.

–target=$LFS_TGT
GCC를 교차 컴파일하고 있으므로 이전에 컴파일한 GCC 바이너리로 대상 라이브러리(libgcc 및 libstdc++)를 빌드할 수 없습니다(해당 바이너리는 호스트에서 실행되지 않음). GCC 빌드 시스템은 기본적으로 호스트의 C 및 C++ 컴파일러를 해결 방법으로 사용하려고 시도합니다. 다른 버전의 GCC로 GCC 대상 라이브러리를 빌드하는 것은 지원되지 않으므로 호스트의 컴파일러를 사용하면 빌드가 실패할 수 있습니다. 이 매개 변수는 라이브러리가 GCC 패스 1로 빌드되도록 합니다.

ldflags_for_target=…
libstdc++가 GCC 패스 1에서 빌드된 정적 버전 대신 이 패스에서 빌드 중인 공유 libgcc를 사용하도록 허용합니다. 이는 C++ 예외 처리를 지원하는 데 필요합니다.

–disable-libsanitizer
GCC 새니타이저 런타임 라이브러리를 비활성화합니다. 임시 설치에는 필요하지 않습니다. 이 스위치는 대상에 대해 libcrypt를 설치하지 않고 GCC를 빌드하는 데 필요합니다. gcc-pass1에서는 –disable-libstdcxx로 암시되었지만 이제는 명시적으로 전달해야 합니다.

패키지를 컴파일합니다.

패키지를 설치합니다.

마지막으로 유틸리티 심볼릭 링크를 생성합니다. 많은 프로그램과 스크립트는 gcc 대신 cc를 실행하는데, 이는 프로그램을 범용적으로 유지하기 위해 사용되므로 GNU C 컴파일러가 항상 설치되어 있지 않은 모든 종류의 UNIX 시스템에서 사용할 수 있습니다. cc를 실행하면 시스템 관리자가 설치할 C 컴파일러를 자유롭게 결정할 수 있습니다.

이 패키지에 대한 자세한 내용은 섹션 8.28.2, "GCC의 내용"에 나와 있습니다.