Binutils-2.42 - 1차 | Linux-6.7.4 API Headers |
GCC 패키지에는 C 컴파일러와 C++ 컴파일러가 포함된 GNU 컴파일러 컬렉션이 포함되어 있습니다.
GCC를 사용하려면 GMP, MPFR 및 MPC 패키지가 필요합니다. 이러한 패키지는 호스트 배포에 포함되지 않을 수 있으므로 GCC로 빌드됩니다. 각 패키지의 압축을 GCC 소스 디렉터리에 풀고 디렉터리의 이름을 변경하여 GCC 빌드 중에 자동으로 사용할 수 있도록 하세요.
참고
이 장에 대해 자주 오해하는 경우가 있습니다. 절차는 앞서 설명한 대로 다른 모든 챕터와 동일합니다(기본적인 컴파일 과정). 먼저 소스 디렉토리에서 gcc-13.2.0 tarball을 추출한 다음 생성한 디렉토리로 변경합니다. 그런 다음 아래 지침을 진행해야 합니다.
tar -xf ../mpfr-4.2.1.tar.xz
mv -v mpfr-4.2.1 mpfr
tar -xf ../gmp-6.3.0.tar.xz
mv -v gmp-6.3.0 gmp
tar -xf ../mpc-1.3.1.tar.gz
mv -v mpc-1.3.1 mpc
x86_64 호스트에서는 64비트 라이브러리의 기본 디렉터리 이름을 “lib”로 사용하도록 설정합니다.
case $(uname -m) in
x86_64)
sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64
;;
esac
GCC 문서에서는 별도의 디렉터리에 GCC를 빌드할 것을 권장합니다.
mkdir -v build
cd build
GCC 컴파일을 준비합니다.
../configure \
--target=$LFS_TGT \
--prefix=$LFS/tools \
--with-glibc-version=2.39 \
--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,c++
GCC를 컴파일합니다.
make
패키지를 설치합니다.
make install
이 GCC 빌드는 몇 가지 내부 시스템 헤더를 설치했습니다. 일반적으로 그 중 하나인 limits.h
에는 해당 시스템 limits.h
헤더(이 경우 $LFS/usr/include/limits.h
)가 포함됩니다. 그러나 이 GCC 빌드 시점에는 $LFS/usr/include/limits.h
가 존재하지 않으므로 방금 설치한 내부 헤더는 부분적인 파일이며 시스템 헤더의 확장 기능을 포함하지 않습니다. 이 정도면 Glibc를 빌드하는 데 충분하지만 나중에 전체 내부 헤더가 필요합니다. 일반적인 상황에서 GCC 빌드 시스템이 수행하는 것과 동일한 명령을 사용하여 내부 헤더의 전체 버전을 생성합니다.
참고
아래 명령은 역따옴표
와 $()
구문, 두 가지 방법을 사용하여 중첩 명령 대체의 예를 보여줍니다. 두 대체 방법에 대해 동일한 방법을 사용하여 작성할 수도 있지만, 두 가지 방법을 혼합하여 사용할 수 있음을 보여주기 위해 이러한 방식으로 표시했습니다. 일반적으로 $()
방법을 선호합니다.
cd ..
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include/limits.h
이 패키지의 상세한 내용은 8.28.2. "GCC 패키지 구성"에 있습니다.