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