차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
linuxfromscratch:12.1:057-gcc-13.2.0_-_pass_2 [2024/05/15 09:08] – baecy | linuxfromscratch:12.1:057-gcc-13.2.0_-_pass_2 [2024/06/16 23:45] (현재) – [6.18.1. GCC 설치] baecy | ||
---|---|---|---|
줄 1: | 줄 1: | ||
^ Linux From Scratch - Version 12.1-systemd | ^ Linux From Scratch - Version 12.1-systemd | ||
^ Chapter 6. Cross Compiling Temporary Tools ^^^ | ^ Chapter 6. Cross Compiling Temporary Tools ^^^ | ||
- | |[[.: | + | |[[.: |
- | |Binutils-2.42 - Pass 2 | | + | |Binutils-2.42 - 2차 |
------ | ------ | ||
- | ====== 6.18. GCC-13.2.0 - 2차 설치 ====== | + | ===== 6.18. GCC-13.2.0 - 2차 ===== |
GCC 패키지에는 C 컴파일러와 C++ 컴파일러가 포함된 GNU 컴파일러 컬렉션이 포함되어 있습니다. | GCC 패키지에는 C 컴파일러와 C++ 컴파일러가 포함된 GNU 컴파일러 컬렉션이 포함되어 있습니다. | ||
- | **대략적인 | + | * **빌드 시간:** 4.4 SBU |
- | **필요한 | + | |
----- | ----- | ||
- | ===== 6.18.1. GCC 설치 | + | ==== 6.18.1. GCC 설치 ==== |
- | GCC의 첫 번째 빌드에서와 마찬가지로 GMP, MPFR 및 MPC 패키지가 필요합니다. 타르볼의 압축을 풀고 | + | GCC의 첫 번째 빌드에서와 마찬가지로 GMP, MPFR 및 MPC 패키지가 필요합니다. 타르볼의 압축을 풀고 디렉터리 이름을 변경합니다. |
- | < | + | <code bash> |
tar -xf ../ | tar -xf ../ | ||
- | mv -v mpfr-4.2.1 mpfr | ||
tar -xf ../ | tar -xf ../ | ||
- | mv -v gmp-6.3.0 gmp | ||
tar -xf ../ | tar -xf ../ | ||
+ | mv -v mpfr-4.2.1 mpfr | ||
+ | mv -v gmp-6.3.0 gmp | ||
mv -v mpc-1.3.1 mpc | mv -v mpc-1.3.1 mpc | ||
</ | </ | ||
- | x86_64에서 빌드하는 경우 64비트 라이브러리의 기본 디렉터리 이름을 " | + | x86_64에서 빌드하는 경우 64비트 라이브러리의 기본 디렉터리 이름을 " |
- | < | + | <code bash> |
case $(uname -m) in | case $(uname -m) in | ||
x86_64) | x86_64) | ||
- | sed -e '/ | + | sed -e '/ |
-i.orig gcc/ | -i.orig gcc/ | ||
;; | ;; | ||
줄 40: | 줄 40: | ||
</ | </ | ||
- | POSIX 스레드를 지원하는 라이브러리를 빌드할 수 있도록 libgcc 및 libstdc++ 헤더의 빌드 규칙을 재정의합니다: | + | POSIX 스레드를 지원하는 라이브러리를 빌드할 수 있도록 libgcc 및 libstdc++ 헤더의 빌드 규칙을 재정의합니다. |
- | < | + | <code bash> |
- | sed '/ | + | sed '/ |
-i libgcc/ | -i libgcc/ | ||
</ | </ | ||
- | 별도의 빌드 디렉터리를 | + | 별도의 빌드 디렉터리를 생성합니다. |
- | < | + | <code bash> |
mkdir -v build | mkdir -v build | ||
- | cd build | + | cd |
</ | </ | ||
- | GCC 빌드를 시작하기 전에 | + | GCC 빌드를 시작하기 전에 최적화 플래그를 재정의하는 환경 변수((CFLAGS, CXXFLAGS, LDFLAGS 등))를 설정 해제해야 합니다. |
- | 이제 컴파일을 위해 GCC를 준비합니다: | + | 이제 컴파일을 위해 GCC를 준비합니다. |
- | < | + | <code bash> |
- | ../ | + | ../ |
- | --build=$(../ | + | --build=$(../ |
- | --host=$LFS_TGT \ | + | --host=$LFS_TGT |
- | --target=$LFS_TGT \ | + | --target=$LFS_TGT |
- | LDFLAGS_FOR_TARGET=-L$PWD/ | + | LDFLAGS_FOR_TARGET=-L$PWD/ |
- | --prefix=/ | + | --prefix=/ |
- | --with-build-sysroot=$LFS \ | + | --with-build-sysroot=$LFS |
- | --enable-default-pie \ | + | --enable-default-pie |
- | --enable-default-ssp \ | + | --enable-default-ssp |
- | --disable-nls \ | + | --disable-nls |
- | --disable-multilib \ | + | --disable-multilib |
- | --disable-libatomic \ | + | --disable-libatomic |
- | --disable-libgomp \ | + | --disable-libgomp |
- | --disable-libquadmath \ | + | --disable-libquadmath |
- | --disable-libsanitizer \ | + | --disable-libsanitizer |
- | --disable-libssp \ | + | --disable-libssp |
- | --disable-libvtv \ | + | --disable-libvtv |
--enable-languages=c, | --enable-languages=c, | ||
</ | </ | ||
- | === 새로운 구성 | + | === configure |
- | * // | + | * // |
- | * // | + | * // |
- | * //ldflags_for_target=...// \\ libstdc++가 GCC 패스 1에서 빌드된 정적 버전 대신 이 패스에서 빌드 중인 공유 | + | * //LDFLAGS_FOR_TARGET=...// \\ **libstdc++**가 GCC 패스 1에서 빌드된 정적 버전 대신 이 패스에서 빌드 중인 |
- | * // | + | * // |
- | 패키지를 컴파일합니다: | + | 패키지를 컴파일합니다. |
- | < | + | <code bash> |
make | make | ||
</ | </ | ||
- | 패키지를 설치합니다: | + | 패키지를 설치합니다. |
- | < | + | <code bash> |
make DESTDIR=$LFS install | make DESTDIR=$LFS install | ||
</ | </ | ||
- | 마지막으로 유틸리티 | + | 마지막으로 유용한 |
- | < | + | <code bash> |
ln -sv gcc $LFS/ | ln -sv gcc $LFS/ | ||
</ | </ | ||
줄 106: | 줄 106: | ||
------ | ------ | ||
- | 이 패키지에 대한 자세한 내용은 [[.: | + | 이 패키지에 대한 자세한 내용은 [[.: |