^ Linux From Scratch - Version 12.1-systemd ^^^
^ Important Preliminary Material ^^^
|[[.:032-Toolchain Technical Notes|이전]] | [[.:3-0-important_preliminary_material|위로]] / [[.:12.1|처음으로]] | [[.:05-Compiling a Cross-Toolchain|다음]]|
|툴체인 기술 설명 | 크로스 툴체인 컴파일|
----
===== iii. 기본적인 컴파일 과정 =====
주의\\
LFS의 개발 주기 동안 패키지 업데이트에 맞추거나 업데이트된 패키지의 새로운 기능을 활용하기 위해 이 책의 지침이 수정되는 경우가 많습니다. 서로 다른 버전의 LFS 책에 있는 지침을 혼용하면 미묘한 문제가 발생할 수 있습니다. 이러한 종류의 문제는 일반적으로 이전 LFS 릴리스용으로 만든 일부 스크립트를 재사용할 때 발생합니다. 이러한 재사용은 절대로 권장하지 않습니다. 어떤 이유로든 이전 LFS 릴리스의 스크립트를 재사용하는 경우에는 현재 버전의 LFS 북과 일치하도록 스크립트를 업데이트하는 데 매우 주의를 기울여야 합니다.
다음은 각 패키지를 빌드할 때 알아야 할 몇 가지 사항입니다.
* 컴파일 전에 여러 패키지를 패치하지만 문제를 우회하기 위해 패치가 필요한 경우에만 패치를 적용합니다. 현재 장과 다음 장 모두에서 패치가 필요한 경우가 많지만 동일한 패키지를 두 번 이상 빌드할 때 패치가 바로 필요하지 않은 경우도 있습니다. 따라서 다운로드한 패치에 대한 지침이 누락된 것 같더라도 걱정하지 마세요. 패치를 적용할 때 //offset// 또는 //fuzz//에 대한 경고 메시지가 표시될 수도 있습니다. 패치가 성공적으로 적용된 것이므로 이러한 경고에 대해 걱정하지 마세요.
* 대부분의 패키지를 컴파일하는 동안 화면에 일부 경고 메시지가 스크롤됩니다. 이는 정상이며 무시해도 됩니다. 이러한 경고는 일반적으로 더 이상 사용되지 않지만, 유효하지 않은 것도 아닌 C 또는 C++ 구문 사용에 관한 것입니다. C 표준은 자주 변경되며 일부 패키지는 아직 업데이트되지 않았습니다. 이는 심각한 문제는 아니지만 경고가 표시되는 원인이 됩니다.
* 마지막으로 ''LFS'' 환경 변수가 제대로 설정되어 있는지 다시 한 번 확인하세요.echo $LFS
출력에 LFS 파티션의 마운트 지점 경로(예제에서는 ''/mnt/lfs'')가 표시되는지 확인합니다.
* 마지막으로 두 가지의 지켜야 하는 중요한 항목입니다.
**중요** \\
빌드 설명에서는 심볼릭 링크를 포함한 [[.:016-host_system_requirements|호스트 시스템 요구 사항]]이 아래와 같이 올바르게 설정되었다고 가정합니다.
* **bash**가 사용 중인 셸입니다.
* **sh**는 **bash**에 대한 심볼릭 링크입니다.
* **/usr/bin/awk**는 **gawk**에 대한 심볼릭 링크입니다.
* **/usr/bin/yacc**는 **bison**의 심볼릭 링크이거나 **bison**을 실행하는 작은 스크립트 입니다.
**중요** \\
다음은 빌드 진행의 개요입니다.
- 모든 소스와 패치를 //chroot// 환경에서 액세스할 수 있는 디렉토리(예: ''$LFS/sources/'')에 배치합니다.
- ''$LFS/sources/'' 디렉터리로 변경합니다.
- 각 패키지에 대해.
- **tar** 프로그램을 사용하여 빌드할 패키지를 추출합니다. [[.:05-Compiling a Cross-Toolchain|5장]] 및 [[06-Cross Compiling Temporary Tools|6장]]에서 패키지를 추출할 때 //**lfs**// 사용자인지 확인하세요.
- 소스 코드를 추출할 때 **tar** 명령 외의 다른 방법을 사용하지 마세요. 특히 **cp -R** 명령을 사용하여 소스 코드 트리를 다른 곳에 복사하면 소스 트리의 링크와 타임스탬프가 파괴되어 빌드에 실패할 수 있습니다.
- 디렉터리를 패키지를 추출할 때 만들어진 디렉터리로 변경합니다.
- 패키지 빌드 설명을 따라 진행합니다.
- 빌드가 완료되면 다시 소스 디렉터리로 돌아갑니다.
- 별도의 지시가 없는 한 추출한 소스 디렉터리를 삭제합니다.