이 패키지에 대한 자세한 정보는 6.18.2절. “Binutils의 내용.”에서 찾을 수 있다.
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의 내용.”에서 찾을 수 있다.