linuxfromscratch:12.1:035-binutils-2.42_-_pass_1

Linux From Scratch - Version 12.1-systemd
Chapter 5. Compiling a Cross-Toolchain
이전 위로 / 처음으로 다음
개요 GCC-13.2.0 - 1차

Binutils 패키지에는 링커, 어셈블러 및 객체 파일 처리를 위한 기타 도구가 포함되어 있습니다.

  • 빌드 시간: 1 SBU
  • 디스크 용량: 663 MB

참고
기본적인 컴파일 과정으로 돌아가서 참고 사항을 다시 읽어보세요. 중요 표시된 메모를 이해하면 나중에 발생 할 수 있는 많은 문제를 줄일 수 있습니다.

Glibc와 GCC 모두 사용 가능한 링커와 어셈블러에 대해 다양한 테스트를 수행하여 어떤 기능을 활성화할지 결정하기 때문에 Binutils 패키지가 가장 먼저 컴파일되는 것이 중요합니다.

Binutils 문서에서는 별도의 디렉터리에 Binutils를 빌드 할 것을 권장합니다.

mkdir -v build
cd       build

참고
이 책의 나머지 부분에 표기된 SBU 값을 유용하게 사용하려면 configure부터 make install까지 이 패키지를 빌드하는 데 걸리는 시간을 측정하세요. 이 작업을 간단하게 수행하려면 time { ../configure … && make && make install; }와 같이 time 명령으로 명령들을 묶어서 실행하면 됩니다.

Binutils 컴파일을 준비합니다.

../configure --prefix=$LFS/tools \
             --with-sysroot=$LFS \
             --target=$LFS_TGT   \
             --disable-nls       \
             --enable-gprofng=no \
             --disable-werror    \
             --enable-default-hash-style=gnu

configure 옵션 설명

  • –prefix=$LFS/tools
    $LFS/tools 디렉터리에 Binutils 프로그램이 설치되도록 합니다.
  • –with-sysroot=$LFS
    크로스 컴파일의 경우, 빌드 시스템이 $LFS에서 필요에 따라 시스템 라이브러리를 찾도록 지시합니다.
  • –target=$LFS_TGT
    LFS_TGT 변수의 시스템 설명이 config.guess 스크립트가 반환한 값과 약간 다르기 때문에 configure 스크립트가 크로스 링커 빌드를 위해 binutils의 빌드 시스템을 조정하도록 합니다.
  • –disable-nls
    임시 도구에서는 i18n이 필요하지 않으므로 국제화를 비활성화합니다.
  • –enable-gprofng=no
    임시 도구에 필요하지 않은 gprofng 빌드를 비활성화합니다.
  • –disable-werror
    호스트 컴파일러에서 경고가 발생해도 빌드가 중지되지 않도록 합니다.
  • –enable-default-hash-style=gnu
    기본적으로 링커는 공유 라이브러리 및 동적으로 링크된 실행 파일에 대해 GNU 스타일 해시 테이블과 기존 ELF 해시 테이블을 모두 생성합니다. 해시 테이블은 동적 링커가 심볼 조회를 수행하기 위한 용도로만 사용됩니다. LFS에서 동적 링커(Glibc 패키지에서 제공)는 항상 쿼리 속도가 더 빠른 GNU 스타일 해시 테이블을 사용합니다. 따라서 기존 ELF 해시 테이블은 완전히 쓸모가 없습니다. 따라서 링커는 기본적으로 GNU 스타일 해시 테이블만 생성하므로 패키지를 빌드할 때 기존 ELF 해시 테이블을 생성하는 데 시간을 낭비하거나 해시 테이블을 저장하는 데 디스크 공간을 낭비하지 않아도 됩니다.

패키지 컴파일을 진행합니다.

make

패키지를 설치합니다.

make install


이 패키지에 대한 자세한 내용은 8.19.2. "Binutils의 내용"에 나와 있습니다.

  • linuxfromscratch/12.1/035-binutils-2.42_-_pass_1.txt
  • 마지막으로 수정됨: 2024/06/14 16:20
  • 저자 baecy