5.7. Glibc-2.31

Glibc 패키지는 메인 C 라이브러리를 포함하고 있다. 이 라이브러리는 메모리 할당, 디렉토리 검색, 파일 열기 및 닫기, 파일 읽기 및 쓰기, 문자열 처리, 패턴 대조, 산술 등의 기본 루틴을 제공한다.

예상 빌드 시간: 4.5 SBU
필요 디스크 공간: 896 MB

5.7.1. Glibc 설치

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

mkdir -v build
cd       build

다음으로 Glibc 컴파일을 준비한다:

../configure                             \
      --prefix=/tools                    \
      --host=$LFS_TGT                    \
      --build=$(../scripts/config.guess) \
      --enable-kernel=3.2                \
      --with-headers=/tools/include

Configure 옵션들의 의미:

--host=$LFS_TGT, --build=$(../scripts/config.guess)

/tools의 크로스 링커와 크로스 컴파일러를 사용해서 Glibc의 빌드 시스템이 스스로를 크로스 컴파일하게 한다.

--enable-kernel=3.2

Glibc가 3.2 이상 리눅스 커널을 지원하는 라이브러리를 컴파일하도록 한다. 이전 커널에 대한 라이브러리는 사용할 수 없다.

--with-headers=/tools/include

앞서 tools 디렉토리에 설치된 헤더들을 가지고 컴파일하도록 한다. 커널이 어떤 기능들을 갖고 있는지 정확히 알고 그에 따른 최적화를 할 수 있다.

이 단계에서 다음과 같은 경고가 나타날 수 있다:

configure: WARNING:
*** These auxiliary programs are missing or
*** incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

누락됐거나 호환되지 않는다는 msgfmt 프로그램은 보통 문제가 되지 않는다. 이 msgfmt 프로그램은 호스트 배포판이 제공하는 Gettext 패키지의 일부다.

[참고]

참고

"병렬 make"로 빌드할 때 실패하는 경우가 있다는 보고가 있었다. 이럴 경우 "-j1" 옵션을 사용해서 make 명령을 다시 실행하라.

패키지를 컴파일한다:

make

패키지를 설치한다:

make install
[경고]

경고

여기서 잠깐 멈추고 새로운 툴체인의 기본 기능(컴파일 및 링크)이 기대한 대로 잘 작동하는지 확인하는 것이 우선이다. 다음 명령으로 온전성 검사를 수행하라:

echo 'int main(){}' > dummy.c
$LFS_TGT-gcc dummy.c
readelf -l a.out | grep ': /tools'

모든 것이 제대로 작동한다면 오류가 없어야 하며 마지막 명령의 출력은 다음과 같을 것이다:

[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]

32비트 시스템에서는 인터프리터 이름이 /tools/lib/ld-linux.so.2임을 참고하라.

만약 출력이 위와 같이 표시되지 않거나 출력이 전혀 없다면, 무언가 잘못된 것이다. 이전 단계로 돌아가 어디서 문제가 생겼는지 파악하고 수정하라. 이 문제는 계속 진행하기 전에 반드시 해결해야 한다.

모두 잘 됐다면, 테스트 파일을 정리하라:

rm -v dummy.c a.out
[참고]

참고

다음 절에서 Binutils를 빌드하면 툴체인이 올바르게 빌드되었는지 다시금 확인하는 기회가 될 것이다. Binutils 빌드에 실패하면, 이전 Binutils, GCC, 또는 Glibc 중 어딘가 문제가 생겼음을 보여주는 것이다.

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