차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
| linuxfromscratch:12.1:036-gcc-13.2.0_-_pass_1 [2024/05/03 04:41] – baecy | linuxfromscratch:12.1:036-gcc-13.2.0_-_pass_1 [2024/06/16 23:00] (현재) – [5.3.1. Cross GCC 설치] baecy | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| - | ===== 5.3. GCC-13.2.0 - 1차 ===== | + | ^ Linux From Scratch - Version 12.1-systemd |
| + | ^ Chapter 5. Compiling a Cross-Toolchain | ||
| + | |[[.: | ||
| + | |||
| + | |Binutils-2.42 - 1차 | Linux-6.7.4 API Headers| | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== 5.3. GCC-13.2.0 - 1차 ====== | ||
| GCC 패키지에는 C 컴파일러와 C++ 컴파일러가 포함된 GNU 컴파일러 컬렉션이 포함되어 있습니다. | GCC 패키지에는 C 컴파일러와 C++ 컴파일러가 포함된 GNU 컴파일러 컬렉션이 포함되어 있습니다. | ||
| - | 대략적인 | + | * **빌드 시간:** 3.8 SBU |
| - | 필요한 | + | * **디스크 공간:** 4.1 GB |
| ------ | ------ | ||
| - | 5.3.1. Cross GCC 설치 | ||
| - | GCC를 사용하려면 GMP, MPFR 및 MPC 패키지가 필요합니다. 이러한 패키지는 호스트 배포에 포함되지 않을 수 있으므로 GCC로 빌드됩니다. 각 패키지의 압축을 GCC 소스 디렉터리에 풀고 결과 디렉터리의 이름을 변경하여 GCC 빌드 절차에서 자동으로 사용할 수 있도록 하세요: | ||
| - | [참고] 참고 | + | ==== 5.3.1. Cross GCC 설치 ==== |
| - | 이 장에 대해 자주 오해하는 경우가 있습니다. 절차는 앞서 설명한 대로 다른 모든 챕터와 동일합니다(패키지 빌드 지침). 먼저 소스 디렉토리에서 gcc-13.2.0 tarball을 추출한 다음 생성한 디렉토리로 변경합니다. 그런 다음 아래 지침을 진행해야 합니다. | + | |
| + | GCC를 사용하려면 GMP, MPFR 및 MPC 패키지가 필요합니다. 이러한 패키지는 호스트 배포에 포함되지 않을 수 있으므로 GCC로 빌드됩니다. 각 패키지의 압축을 GCC 소스 디렉터리에 풀고 디렉터리의 이름을 변경하여 GCC 빌드 중에 자동으로 사용할 수 있도록 하세요. | ||
| + | |||
| + | <WRAP info round center 90%> | ||
| + | **참고** \\ | ||
| + | 이 장에 대해 자주 오해하는 경우가 있습니다. 절차는 앞서 설명한 대로 다른 모든 챕터와 동일합니다([[.: | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| tar -xf ../ | tar -xf ../ | ||
| mv -v mpfr-4.2.1 mpfr | mv -v mpfr-4.2.1 mpfr | ||
| 줄 17: | 줄 32: | ||
| tar -xf ../ | tar -xf ../ | ||
| mv -v mpc-1.3.1 mpc | mv -v mpc-1.3.1 mpc | ||
| - | x86_64 호스트에서는 64비트 라이브러리의 기본 디렉터리 이름을 " | + | </ |
| - | 케이스 $(uname -m) in | + | x86_64 호스트에서는 64비트 라이브러리의 기본 디렉터리 이름을 " |
| + | |||
| + | <code bash> | ||
| + | case $(uname -m) in | ||
| x86_64) | x86_64) | ||
| - | sed -e '/ | + | sed -e '/ |
| -i.orig gcc/ | -i.orig gcc/ | ||
| ;; | ;; | ||
| esac | esac | ||
| - | GCC 문서에서는 전용 빌드 디렉터리에 GCC를 빌드할 것을 권장합니다: | + | </ |
| - | mkdir -v 빌드 | + | GCC 문서에서는 별도의 디렉터리에 GCC를 |
| - | cd 빌드 | + | |
| - | 컴파일을 위해 GCC를 준비합니다: | + | |
| - | ../ | + | <code bash> |
| - | --target=$LFS_TGT \ | + | mkdir -v build |
| - | | + | cd |
| - | --with-glibc-version=2.39 \. | + | </code> |
| - | --with-sysroot=$LFS \. | + | |
| - | --with-newlib \ | + | |
| - | --without-headers \ | + | |
| - | --enable-default-pie \ | + | |
| - | --enable-default-ssp \ | + | |
| - | --disable-nls \ | + | |
| - | --disable-shared \ | + | |
| - | --disable-multilib \ | + | |
| - | --disable-threads \ | + | |
| - | --disable-libatomic \ | + | |
| - | --disable-libgomp \ | + | |
| - | --disable-libquadmath \. | + | |
| - | --disable-libssp \ | + | |
| - | --disable-libvtv \ | + | |
| - | --disable-libstdcxx \. | + | |
| - | --enable-languages=c, | + | |
| - | 구성 옵션의 의미 | + | |
| - | --with-glibc-version=2.39 | + | GCC 컴파일을 준비합니다. |
| - | 이 옵션은 대상에서 사용할 Glibc 버전을 지정합니다. pass1 GCC로 컴파일된 모든 것이 호스트 배포판의 libc와 분리된 루트 환경에서 실행되므로 호스트 배포판의 libc와는 관련이 없습니다. | + | |
| - | --with-newlib | + | <code bash> |
| - | 아직 작동하는 C 라이브러리를 사용할 수 없으므로 libgcc를 빌드할 때 inhibit_libc 상수가 정의되도록 합니다. 이렇게 하면 libc 지원이 필요한 모든 코드의 컴파일이 방지됩니다. | + | ../ |
| + | --target=$LFS_TGT | ||
| + | --prefix=$LFS/ | ||
| + | --with-glibc-version=2.39 \ | ||
| + | --with-sysroot=$LFS | ||
| + | | ||
| + | | ||
| + | --enable-default-pie | ||
| + | --enable-default-ssp | ||
| + | --disable-nls | ||
| + | --disable-shared | ||
| + | --disable-multilib | ||
| + | --disable-threads | ||
| + | --disable-libatomic | ||
| + | --disable-libgomp | ||
| + | --disable-libquadmath | ||
| + | --disable-libssp | ||
| + | --disable-libvtv | ||
| + | --disable-libstdcxx | ||
| + | --enable-languages=c, | ||
| + | </ | ||
| - | --헤더 없이 | + | === configure 옵션 설명 === |
| - | 완전한 크로스 컴파일러를 만들 때 GCC는 대상 시스템과 호환되는 표준 헤더가 필요합니다. 우리의 목적상 이러한 헤더는 필요하지 않습니다. 이 스위치는 GCC가 이러한 헤더를 찾지 않도록 합니다. | + | |
| - | --enable-default-pie 및 --enable-default-ssp | + | * // |
| - | 이 스위치를 사용하면 | + | * // |
| + | * // | ||
| + | * //**--enable-default-pie**// 및 //**--enable-default-ssp**// \\ GCC가 기본적으로 일부 보안 기능이 강화된 프로그램을 컴파일할 수 있습니다(자세한 내용은 8장의 | ||
| + | |PIE 및 SSP에 대한 메모]]에서 확인할 수 있습니다). 컴파일러는 임시 실행 파일만 생성하므로 이 단계에서는 꼭 필요한 것은 아닙니다. 하지만 임시 패키지를 가능한 한 최종 패키지에 가깝게 만드는 것이 더 깔끔합니다. | ||
| + | * // | ||
| + | * // | ||
| + | * // | ||
| + | * // | ||
| - | --disable-shared | + | GCC를 컴파일합니다. |
| - | 이 스위치는 | + | |
| - | + | ||
| - | --disable-multilib | + | |
| - | x86_64에서 LFS는 멀티라이브 구성을 지원하지 않습니다. 이 스위치는 x86에는 무해합니다. | + | |
| - | + | ||
| - | --disable-threads, | + | |
| - | 이 스위치는 각각 스레딩, libatomic, libgomp, libquadmath, | + | |
| - | + | ||
| - | --enable-languages=c, | + | |
| - | 이 옵션은 C와 C++ 컴파일러만 빌드하도록 | + | |
| - | + | ||
| - | 실행하여 GCC를 컴파일합니다: | + | |
| + | <code bash> | ||
| make | make | ||
| - | 패키지를 설치합니다: | + | </ |
| + | 패키지를 설치합니다. | ||
| + | |||
| + | <code bash> | ||
| make install | make install | ||
| - | 이 GCC 빌드는 몇 가지 내부 시스템 헤더를 설치했습니다. 일반적으로 그 중 하나인 limits.h에는 해당 시스템 limits.h 헤더(이 경우 $LFS/ | + | </ |
| + | |||
| + | 이 GCC 빌드는 몇 가지 내부 시스템 헤더를 설치했습니다. 일반적으로 그 중 하나인 | ||
| - | [참고] | + | <WRAP info round center 90%> |
| - | 아래 명령은 역따옴표와 $() 구문이라는 | + | **참고** \\ |
| + | 아래 명령은 | ||
| + | </ | ||
| + | <code bash> | ||
| cd .. | cd .. | ||
| cat gcc/ | cat gcc/ | ||
| `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/ | `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/ | ||
| - | 이 패키지의 상세한 내용은 8.28.2 " | + | </ |
| + | ----- | ||
| + | 이 패키지의 상세한 내용은 [[.: | ||