차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
linuxfromscratch:12.1:038-glibc-2.39 [2024/04/16 16:04] – 만듦 - 바깥 편집 127.0.0.1 | linuxfromscratch:12.1:038-glibc-2.39 [2024/06/14 16:52] (현재) – baecy | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ^ Linux From Scratch - Version 12.1-systemd | ||
+ | ^ Chapter 5. Compiling a Cross-Toolchain | ||
+ | |[[.: | ||
+ | |Linux-6.7.4 API Headers | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== 5.5. Glibc-2.39 ====== | ||
+ | |||
+ | Glibc 패키지에는 기본 C 라이브러리가 포함되어 있습니다. 이 라이브러리는 메모리 할당, 디렉터리 검색, 파일 열기 및 닫기, 파일 읽기 및 쓰기, 문자열 처리, 패턴 일치, 연산 등을 위한 기본 루틴을 제공합니다. | ||
+ | |||
+ | * **빌드 시간:** 1.5 SBU | ||
+ | * **디스크 공간:** 846 MB | ||
+ | |||
+ | ----- | ||
+ | |||
+ | ==== 5.5.1. Glibc 설치 ==== | ||
+ | |||
+ | 먼저 LSB 준수를 위한 심볼릭 링크를 생성합니다. 또한 x86_64의 경우 동적 라이브러리 로더가 제대로 작동하는 데 필요한 호환성 심볼릭 링크를 생성합니다. | ||
+ | |||
+ | <code bash> | ||
+ | case $(uname -m) in | ||
+ | i?86) ln -sfv ld-linux.so.2 $LFS/ | ||
+ | ;; | ||
+ | x86_64) ln -sfv ../ | ||
+ | ln -sfv ../ | ||
+ | ;; | ||
+ | esac | ||
+ | </ | ||
+ | |||
+ | <WRAP info center round 90%> | ||
+ | **참고** \\ | ||
+ | 위의 명령은 올바른 사용 방법입니다. **ln** 명령에는 여러 구문 버전이 있으므로 오류로 보이는 것을 보고하기 전에 '' | ||
+ | </ | ||
+ | |||
+ | 일부 Glibc 프로그램은 런타임 데이터를 저장하기 위해 FHS와 호환되지 않는 ''/ | ||
+ | |||
+ | <code bash> | ||
+ | patch -Np1 -i ../ | ||
+ | </ | ||
+ | |||
+ | Glibc 문서에서는 전용 빌드 디렉터리에 Glibc를 빌드할 것을 권장합니다. | ||
+ | |||
+ | <code bash> | ||
+ | mkdir -v build | ||
+ | cd build | ||
+ | </ | ||
+ | |||
+ | **ldconfig** 및 **sln** 유틸리티가 ''/ | ||
+ | |||
+ | <code bash> | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | Glibc 컴파일을 준비합니다. | ||
+ | |||
+ | <code bash> | ||
+ | ../ | ||
+ | --prefix=/ | ||
+ | --host=$LFS_TGT | ||
+ | --build=$(../ | ||
+ | --enable-kernel=4.19 | ||
+ | --with-headers=$LFS/ | ||
+ | --disable-nscd | ||
+ | libc_cv_slibdir=/ | ||
+ | </ | ||
+ | |||
+ | === configure 옵션 설명 === | ||
+ | |||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | |||
+ | 이 단계에서는 다음과 같은 경고가 표시될 수 있습니다. | ||
+ | |||
+ | <code cmdout=1-5> | ||
+ | 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 패키지의 일부입니다. | ||
+ | |||
+ | <WRAP info center round 90%> | ||
+ | **참고** \\ | ||
+ | 이 패키지가 " | ||
+ | </ | ||
+ | |||
+ | 패키지를 컴파일합니다. | ||
+ | |||
+ | <code bash> | ||
+ | make | ||
+ | </ | ||
+ | |||
+ | 패키지를 설치합니다. | ||
+ | |||
+ | <WRAP alert round center 90%> | ||
+ | **경고** \\ | ||
+ | '' | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | make DESTDIR=$LFS install | ||
+ | </ | ||
+ | |||
+ | === make install 옵션 설명 === | ||
+ | |||
+ | * // | ||
+ | |||
+ | '' | ||
+ | |||
+ | <code bash> | ||
+ | sed '/ | ||
+ | </ | ||
+ | |||
+ | <WRAP alert center round 90%> | ||
+ | **주의** \\ | ||
+ | 이 시점에서 새 툴체인의 기본 기능(컴파일 및 연결)이 예상대로 작동하는지 확인해야 합니다. 다음과 같이 점검합니다. | ||
+ | |||
+ | <code bash> | ||
+ | echo 'int main(){}' | ||
+ | readelf -l a.out | grep ld-linux | ||
+ | </ | ||
+ | |||
+ | 모든 것이 올바르게 작동하면 오류가 없어야 하며 마지막 명령의 출력은 다음과 같습니다. | ||
+ | |||
+ | <code cmdout=1> | ||
+ | [Requesting program interpreter: | ||
+ | |||
+ | 32비트 컴퓨터의 경우 인터프리터 이름은 '' | ||
+ | |||
+ | 출력이 위와 다르거나 전혀 출력되지 않는다면 문제가 있는 것입니다. 각 단계를 조사하고 역추적하여 문제를 찾아서 해결하세요. 더 진행하기 전에 반드시 이 문제를 해결해야 합니다. | ||
+ | |||
+ | 모든 문제가 해결되면 테스트 파일을 정리합니다. | ||
+ | <code bash> | ||
+ | rm -v a.out | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP info center round 90%> | ||
+ | **참고** \\ | ||
+ | 다음 장에서 패키지를 빌드하면 툴체인이 제대로 빌드되었는지 추가로 확인할 수 있습니다. 일부 패키지, 특히 **Binutils-pass2** 또는 **GCC-pass2**가 빌드에 실패하면 이전 Binutils, GCC 또는 Glibc 설치에 문제가 있음을 나타냅니다. | ||
+ | </ | ||
+ | |||
+ | ----- | ||
+ | |||
+ | 이 패키지에 대한 자세한 내용은 [[.: |