Linux From Scratch - Version 12.1-systemd
Chapter 6. Cross Compiling Temporary Tools
이전 위로 / 처음으로 다음
Binutils-2.42 - 2차 가상 루트 환경에서 추가적인 임시 도구 구성

6.18. GCC-13.2.0 - 2차

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


6.18.1. GCC 설치

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

tar -xf ../mpfr-4.2.1.tar.xz
tar -xf ../gmp-6.3.0.tar.xz
tar -xf ../mpc-1.3.1.tar.gz
mv -v mpfr-4.2.1 mpfr
mv -v gmp-6.3.0 gmp
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

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

sed '/thread_header =/s/@.*@/gthr-posix.h/' \
    -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in

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

mkdir -v build
cd       build

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

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

../configure                                       \
    --build=$(../config.guess)                     \
    --host=$LFS_TGT                                \
    --target=$LFS_TGT                              \
    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      \
    --prefix=/usr                                  \
    --with-build-sysroot=$LFS                      \
    --enable-default-pie                           \
    --enable-default-ssp                           \
    --disable-nls                                  \
    --disable-multilib                             \
    --disable-libatomic                            \
    --disable-libgomp                              \
    --disable-libquadmath                          \
    --disable-libsanitizer                         \
    --disable-libssp                               \
    --disable-libvtv                               \
    --enable-languages=c,c++

configure 옵션 설명

패키지를 컴파일합니다.

make

패키지를 설치합니다.

make DESTDIR=$LFS install

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

ln -sv gcc $LFS/usr/bin/cc


이 패키지에 대한 자세한 내용은 8.28.2. "GCC 패키지 구성"에 나와 있습니다.

1)
CFLAGS, CXXFLAGS, LDFLAGS 등