문서 보기이전 판역링크책에 추가PDF로 내보내기Fold/unfold allODT 내보내기맨 위로 이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요. ~~NOTOC~~ <WRAP centeralign> === Linux From Scratch - Version 12.4 === <WRAP group> <WRAP third column leftalign>[[044-Introduction|이전]] \\ 개요</WRAP> <WRAP third column centeralign>[[.:|처음으로]] \\ [[043-Compiling a Cross-Toolchain|상위]]</WRAP> <WRAP third column rightalign>[[046-GCC-15.2.0 - Pass 1|다음]] \\ GCC-15.2.0 - Pass 1</WRAP> </WRAP> ==== 5.2. Binutils-2.45 - Pass 1 ==== <WRAP group justify> Binutils 패키지에는 링커, 어셈블러 및 오브젝트 파일을 처리하는 도구가 포함되어 있습니다. <WRAP column leftalign> **빌드 예상시간:** \\ **필요한 사용량:** </WRAP> <WRAP twothirds leftalign> 1 SBU \\ 678 MB </WRAP> </WRAP> </WRAP> === 5.2.1 Binutils 크로스 빌드 === <WRAP info> 다시 돌아가서 [[042-general_compilation_instructions|이후 컴파일 진행 방법]]의 내용를 다시 읽어보세요. 중요 표시된 부분을 이해하면 나중에 생길 문제를 줄일 수 있습니다. </WRAP> Binutils가 가장 먼저 컴파일되는 패키지가 되는 것이 중요합니다. Glibc와 GCC 모두 사용 가능한 링커와 어셈블러에 대해 다양한 테스트를 수행하여 기능을 활성화할 수 있기 때문입니다. Binutils 문서에서는 별도의 빌드 디렉터리에서 빌드할 것을 권장합니다. <codeprism lang=bash> mkdir -v build cd build </codeprism> <WRAP info> 책의 나머지 부분에 나열된 SBU 값들이 정확도를 높이려면, 구성부터 설치 완료까지 이 패키지를 빌드하는 데 걸리는 시간을 측정하세요. 이를 쉽게 하려면, 다음과 같이 ''time'' 명령어로 나머지 명령을 묶어주세요. <codeprism lang=bash>time { ../configure ... && make && make install; }</codeprism> </WRAP> 이제 Binutils 패키지 컴파일을 준비합니다. <codeprism lang=bash> ../configure --prefix=$LFS/tools \ --with-sysroot=$LFS \ --target=$LFS_TGT \ --disable-nls \ --enable-gprofng=no \ --disable-werror \ --enable-new-dtags \ --enable-default-hash-style=gnu </codeprism> == configure 옵션 설명 == <WRAP info> 다른 패키지들과 다르게 Binuilt 패키지는 아래에 나오는 모든 옵션이 ''./configure --help''으로 나오지 않습니다. 예를 들어 ''--with-sysroot'' 옵션을 찾으려면 ''ld/configure --help'' 실행해야 합니다. 설정 가능한 모든 옵션을 한번에 보려면 ''./configure --help=recursive''를 사용하세요. </WRAP> * //''--prefix=$LFS/tools''// \\ configure 스크립트가 ''$LFS/tools'' 디렉터리에 Binutils 프로그램을 설치할 준비를 하도록 알려줍니다. * //''--with-sysroot=$LFS''// 크로스 컴파일 시 빌드 시스템이 ''$LFS''에서 타겟 시스템 라이브러리를 찾도록 지시합니다. * //''--target=$LFS_TGT''// \\ ''LFS_TGT'' 변수의 머신 설명이 ''config.guess'' 스크립트에서 반환하는 값과 약간 다르기 때문에, ''configure'' 스크립트에 Vinutil의 빌드 시스템을 조정하여 크로스 링커를 만들도록 지시합니다. * //''--disable-nls''// \\ 임시 도구에 ''i18n''이 필요하지 않으므로 국제화를 비활성화합니다. * //''--enable-gprofng=no''// \\ 임시 도구에는 필요하지 않은 gprofng 빌드를 비활성화합니다. * //''--disable-werror''// \\ 호스트의 컴파일러에서 경고가 발생했을 때 빌드가 중단되는 것을 방지합니다. * //''--enable-new-dtags''// \\ 이로 인해 링커는 전통적인 "rpath" 태그 대신 실행 파일과 공유 라이브러리에 라이브러리 검색 경로를 삽입할 때 "runpath" 태그를 사용합니다. 동적으로 연결된 실행 파일을 디버깅하기 쉽게 해주고, 일부 패키지의 테스트 스위트에서 발생할 수 있는 문제를 우회할 수 있게 해줍니다. * //''--enable-default-hash-style=gnu''// \\ 기본적으로 링커는 GNU 스타일 해시 테이블과 공유 라이브러리 및 동적 연결 실행 파일에 대한 고전 ELF 해시 테이블을 모두 생성합니다. 해시 테이블은 심볼 조회를 수행하는 동적 링커만을 위한 것입니다. LFS에서는 동적 링커(Glibc 패키지에서 제공)가 항상 GNU 스타일의 해시 테이블을 사용하는데, 이 해시 테이블이 쿼리가 더 빠릅니다. 그래서 고전적인 ELF 해시 테이블은 전혀 쓸모가 없습니다. 이 옵션으로로 인해 링커는 GNU 스타일 해시 테이블만 생성하므로, 패키지를 만들 때 고전적인 ELF 해시 테이블을 생성하느라 시간을 낭비하거나 디스크 공간을 낭비하지 않을 수 있습니다. 이어서 패키지를 컴파일 합니다. <codeprism lang=bash> make </codeprism> 패키지를 설치합니다. <codeprism lang=bssh> make install </codeprism> <WRAP box> 이 패키지에 상세한 정보는 <wrap em>8.20.2. Binutils 구성</wrap>에 있습니다. </WRAP> <WRAP group> ----- <WRAP third column leftalign>[[044-Introduction|이전]] \\ 개요</WRAP> <WRAP third column centeralign>[[#linux_from_scratch_-_version_124|위로]] \\ </WRAP> <WRAP third column rightalign>[[046-GCC-15.2.0 - Pass 1|다음]] \\ GCC-15.2.0 - Pass 1</WRAP> </WRAP> linuxfromscratch/12.4/linux_from_scratch/045-binutils-2.45_-_pass_1.txt 마지막으로 수정됨: 2026/01/31 02:08저자 baecy