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

5.2. Binutils-2.42 - 1차 컴파일

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

빌드 시간: 1 SBU

디스크 공간: 663 MB

5.2.1. Cross Binutils 설치

참고 일반 컴파일 지침이라는 제목의 섹션으로 돌아가서 참고 사항을 다시 읽어보세요. 중요하다고 표시된 메모를 이해하면 나중에 많은 문제를 줄일 수 있습니다.

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

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

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

Binutils 컴파일을 준비합니다.

설정 옵션 설명

–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 해시 테이블을 생성하는 데 시간을 낭비하거나 해시 테이블을 저장하는 데 디스크 공간을 낭비하지 않아도 됩니다.

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

패키지를 설치합니다.

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