5.4. Binutils-2.34 - 1단계

Binutils 패키지는 링커, 어셈블러 및 객체 파일을 처리하기 위한 기타 도구를 포함한다.

예상 빌드 시간: 1 SBU
필요 디스크 공간: 625 MB

5.4.1. Cross Binutils 설치

[참고]

참고

이전 절로 돌아가 주의 사항들을 되짚어보라. 중요하다고 표시된 항목들을 이해하면 앞으로의 많은 문제들을 줄일 수 있다.

Binutils를 가장 먼저 컴파일하는 것이 중요하다. Glibc와 GCC는 각자 어떤 기능을 활성화할지 정하기 위해 가용한 링커와 어셈블러를 통해 다양한 테스트를 하기 때문이다.

Binutils 문서에서는 Binutils를 전용 빌드 디렉토리에서 빌드할 것을 권장한다:

mkdir -v build
cd       build
[참고]

참고

이 책에서 앞으로 나올 SBU 값을 의미있게 참고하려면, 설정에서 첫 번째 설치까지 이 패키지를 빌드하는 데 걸린 시간을 측정하라. 이 측정을 쉽게 하려면 명령어를 다음과 같이 time 명령어로 감싸라: time { ./configure ... && ... && make install; }.

[참고]

참고

5장의 대략적인 빌드 SBU 값과 필요 디스크 공간은 테스트 스위트 데이터는 제외한 값이다.

이제 Binutils 컴파일을 준비한다:

../configure --prefix=/tools            \
             --with-sysroot=$LFS        \
             --with-lib-path=/tools/lib \
             --target=$LFS_TGT          \
             --disable-nls              \
             --disable-werror

Configure 옵션들의 의미:

--prefix=/tools

Configure 스크립트가 Binutils 프로그램들을 /tools 디렉토리에 설치하도록 한다.

--with-sysroot=$LFS

크로스 컴파일을 위해 빌드 시스템이 필요에 따라 $LFS에서 대상 시스템 라이브러리를 찾도록 지시한다.

--with-lib-path=/tools/lib

링커가 사용할 라이브러리 경로를 지정한다.

--target=$LFS_TGT

LFS_TGT 변수의 시스템 설명이 config.guess 스크립트에서 반환되는 값과 약간 다르기 때문에, configure 스크립트를 통해 크로스 링커 빌드를 위한 Binutils의 빌드 시스템을 조정한다.

--disable-nls

임시 도구에는 i18n이 필요하지 않으므로 다국어화를 비활성화한다.

--disable-werror

호스트 컴파일러로부터 나온 경고로 빌드가 멈추는 것을 방지한다.

계속해서 패키지 컴파일을 진행한다:

make

이제 컴파일이 끝났다. 원래대로라면 이제 테스트 스위트를 실행했겠지만, 아직은 테스트 스위트 프레임워크(Tcl, Expect 및 DejaGNU)가 아직 준비되지 않았다. 이 첫 번째 단계의 프로그램은 곧 두 번째 단계의 프로그램으로 대체될 것이기 때문에 지금 테스트를 실행해봤자 큰 이점은 없다.

x86_64에서 빌드 중이라면, 심볼릭 링크를 만들어서 툴체인의 안정성을 보장하라:

case $(uname -m) in
  x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac

패키지를 설치한다:

make install

이 패키지에 대한 자세한 정보는 6.18.2절. “Binutils의 내용.”에서 찾을 수 있다.