차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
linuxfromscratch:12.1:057-gcc-13.2.0_-_pass_2 [2024/05/15 09:08] baecylinuxfromscratch:12.1:057-gcc-13.2.0_-_pass_2 [2024/06/16 23:45] (현재) – [6.18.1. GCC 설치] baecy
줄 1: 줄 1:
 ^  Linux From Scratch - Version 12.1-systemd  ^^^ ^  Linux From Scratch - Version 12.1-systemd  ^^^
 ^  Chapter 6. Cross Compiling Temporary Tools  ^^^ ^  Chapter 6. Cross Compiling Temporary Tools  ^^^
-|[[.:056-binutils-2.42_-_pass_2|이전]]  |  [[.:01-introduction|위로]] / [[.:12.1|처음으로]]  |  [[.:07-entering_chroot_and_building_additional_tempory_tools|다음]]|+|[[.:056-binutils-2.42_-_pass_2|이전]]  |  [[.:06-cross_compiling_temporary_tools|위로]] / [[.:12.1|처음으로]]  |  [[.:07-entering_chroot_and_building_additional_tempory_tools|다음]]|
  
-|Binutils-2.42 - Pass 2  |  Entering Chroot and Building Additional Temporary Tools|+|Binutils-2.42 - 2차  |  가상 루트 환경에서 추가적인 임시 도구 구성|
  
 ------  ------ 
  
-====== 6.18. GCC-13.2.0 - 2차 설치 ======+===== 6.18. GCC-13.2.0 - 2차 =====
  
 GCC 패키지에는 C 컴파일러와 C++ 컴파일러가 포함된 GNU 컴파일러 컬렉션이 포함되어 있습니다. GCC 패키지에는 C 컴파일러와 C++ 컴파일러가 포함된 GNU 컴파일러 컬렉션이 포함되어 있습니다.
  
-**대략적인 빌드 시간입니다:** 4.4 SBU \\ +  * **빌드 시간:** 4.4 SBU  
-**필요한 디스크 공간:** 4.8 GB+  **디스크 공간:** 4.8 GB
  
 ----- -----
  
-===== 6.18.1. GCC 설치 =====+==== 6.18.1. GCC 설치 ====
  
-GCC의 첫 번째 빌드에서와 마찬가지로 GMP, MPFR 및 MPC 패키지가 필요합니다. 타르볼의 압축을 풀고 필요한 디렉터리로 합니다:+GCC의 첫 번째 빌드에서와 마찬가지로 GMP, MPFR 및 MPC 패키지가 필요합니다. 타르볼의 압축을 풀고 디렉터리 이름을 변경합니다.
  
-<code lang=bash>+<code bash>
 tar -xf ../mpfr-4.2.1.tar.xz tar -xf ../mpfr-4.2.1.tar.xz
-mv -v mpfr-4.2.1 mpfr 
 tar -xf ../gmp-6.3.0.tar.xz tar -xf ../gmp-6.3.0.tar.xz
-mv -v gmp-6.3.0 gmp 
 tar -xf ../mpc-1.3.1.tar.gz tar -xf ../mpc-1.3.1.tar.gz
 +mv -v mpfr-4.2.1 mpfr
 +mv -v gmp-6.3.0 gmp
 mv -v mpc-1.3.1 mpc mv -v mpc-1.3.1 mpc
 </code> </code>
  
-x86_64에서 빌드하는 경우 64비트 라이브러리의 기본 디렉터리 이름을 "lib"로 변경합니다:+x86_64에서 빌드하는 경우 64비트 라이브러리의 기본 디렉터리 이름을 "lib"로 변경합니다.
  
-<code lang=bash>+<code bash>
 case $(uname -m) in case $(uname -m) in
   x86_64)   x86_64)
-    sed -e '/m64=/s/lib64/lib/' \.+    sed -e '/m64=/s/lib64/lib/' \
         -i.orig gcc/config/i386/t-linux64         -i.orig gcc/config/i386/t-linux64
   ;;   ;;
줄 40: 줄 40:
 </code> </code>
  
-POSIX 스레드를 지원하는 라이브러리를 빌드할 수 있도록 libgcc 및 libstdc++ 헤더의 빌드 규칙을 재정의합니다:+POSIX 스레드를 지원하는 라이브러리를 빌드할 수 있도록 libgcc 및 libstdc++ 헤더의 빌드 규칙을 재정의합니다.
  
-<code lang=bash> +<code bash> 
-sed '/thread_header =/s/@.*@/gthr-posix.h/' \.+sed '/thread_header =/s/@.*@/gthr-posix.h/' \
     -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in     -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
 </code> </code>
  
-별도의 빌드 디렉터리를 다시 생성합니다:+별도의 빌드 디렉터리를 생성합니다.
  
-<code lang=bash>+<code bash>
 mkdir -v build mkdir -v build
-cd build+cd       build
 </code> </code>
  
-GCC 빌드를 시작하기 전에 기본 최적화 플래그를 재정의하는 환경 변수를 설정 해제해야 합니다.+GCC 빌드를 시작하기 전에 최적화 플래그를 재정의하는 환경 변수((CFLAGS, CXXFLAGS, LDFLAGS 등))를 설정 해제해야 합니다.
  
-이제 컴파일을 위해 GCC를 준비합니다:+이제 컴파일을 위해 GCC를 준비합니다.
  
-<code lang=bash> +<code bash> 
-../configure \ +../configure                                       
-    --build=$(../config.guess) \ +    --build=$(../config.guess)                     
-    --host=$LFS_TGT \ +    --host=$LFS_TGT                                
-    --target=$LFS_TGT \ +    --target=$LFS_TGT                              
-    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \ +    LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc      
-    --prefix=/usr \ +    --prefix=/usr                                  
-    --with-build-sysroot=$LFS \ +    --with-build-sysroot=$LFS                      
-    --enable-default-pie \ +    --enable-default-pie                           
-    --enable-default-ssp \ +    --enable-default-ssp                           
-    --disable-nls \ +    --disable-nls                                  
-    --disable-multilib \ +    --disable-multilib                             
-    --disable-libatomic \ +    --disable-libatomic                            
-    --disable-libgomp \ +    --disable-libgomp                              
-    --disable-libquadmath \ +    --disable-libquadmath                          
-    --disable-libsanitizer \ +    --disable-libsanitizer                         
-    --disable-libssp \ +    --disable-libssp                               
-    --disable-libvtv \+    --disable-libvtv                               \
     --enable-languages=c,c++     --enable-languages=c,c++
 </code> </code>
  
-=== 새로운 구성 옵션의 의미입니다: ===+=== configure 옵션 설명 ===
  
-  * //--with-build-sysroot=$LFS// \\ 일반적으로 --host를 사용하면 크로스 컴파일러가 GCC 빌드에 사용되며, 해당 컴파일러는 $LFS에서 헤더와 라이브러리를 찾아야 한다는 것을 알고 있습니다. 그러나 GCC용 빌드 시스템은 이 위치를 인식하지 못하는 다른 도구를 사용합니다. 이 스위치는 이러한 도구가 호스트가 아닌 $LFS에서 필요한 파일을 찾도록 하기 위해 필요합니다. +  * //--with-build-sysroot=$LFS// \\ 일반적으로 //--host//를 사용하면 크로스 컴파일러가 GCC 빌드에 사용되며, 해당 컴파일러는 $LFS에서 헤더와 라이브러리를 찾아야 한다는 것을 알고 있습니다. 그러나 GCC 빌드 시스템은 이 위치를 인식하지 못하는 다른 도구도 사용합니다. 이 스위치는 이러한 도구가 호스트가 아닌 $LFS에서 필요한 파일을 찾도록 하기 위해 필요합니다. 
-  * //--target=$LFS_TGT// \\ GCC를 교차 컴파일하고 있으므로 이전에 컴파일한 GCC 바이너리로 대상 라이브러리(libgcc 및 libstdc++)를 빌드할 수 없습니다(해당 바이너리는 호스트에서 실행되지 않음). GCC 빌드 시스템은 기본적으로 호스트의 C 및 C++ 컴파일러를 해결 방법으로 사용하려고 시도합니다. 다른 버전의 GCC로 GCC 대상 라이브러리를 빌드하는 것은 지원되지 않으므로 호스트의 컴파일러를 사용하면 빌드가 실패할 수 있습니다. 이 매개 변수는 라이브러리가 GCC 패스 1로 빌드되도록 합니다. +  * //--target=$LFS_TGT// \\ GCC를 크로스 컴파일하고 있으므로 이전에 컴파일한 GCC 바이너리로 대상 라이브러리(''libgcc'' 및 ''libstdc++'')를 빌드할 수 없습니다(해당 바이너리는 호스트에서 실행되지 않음). GCC 빌드 시스템은 기본적으로 호스트의 C 및 C++ 컴파일러를 사용하려고 시도합니다. 다른 버전의 GCC로 GCC 대상 라이브러리를 빌드하는 것은 지원되지 않으므로 호스트의 컴파일러를 사용하면 빌드가 실패할 수 있습니다. 이 옵션은 GCC 1차에 빌드한 라이브러리를 사용 하도록 합니다. 
-  * //ldflags_for_target=...// \\ libstdc++가 GCC 패스 1에서 빌드된 정적 버전 대신 이 패스에서 빌드 중인 공유 libgcc를 사용하도록 허용합니다. 이는 C++ 예외 처리를 지원하는 데 필요합니다. +  * //LDFLAGS_FOR_TARGET=...// \\ **libstdc++**가 GCC 패스 1에서 빌드된 정적 버전 대신 이 패스에서 빌드 중인 libgcc 공유 라이브러리를 사용하도록 합니다. 이는 C++ 예외 처리를 지원하는 데 필요합니다. 
-  * //--disable-libsanitizer// \\ GCC 새니타이저 런타임 라이브러리를 비활성화합니다. 임시 설치에는 필요하지 않습니다. 이 스위치는 대상에 대해 libcrypt를 설치지 않고 GCC를 빌드하는 데 필요합니다. gcc-pass1에서는 --disable-libstdcxx로 암시되었지만 이제는 명시적으로 전달해야 합니다.+  * //--disable-libsanitizer// \\ GCC 새니타이저 런타임 라이브러리를 비활성화합니다. 임시 설치에는 필요하지 않습니다. 이 스위치는 libcrypt가 설치지 안은 대상 시스템에 대한 GCC를 빌드하는 데 필요합니다. [[.:036-gcc-13.2.0_-_pass_1|GCC - 1차]]에서는 --disable-libstdcxx로 이것을 암시지만 이제는 명시적으로 설정에 전달해야 합니다.
  
-패키지를 컴파일합니다:+패키지를 컴파일합니다.
  
-<code lang=bash>+<code bash>
 make make
 </code> </code>
  
-패키지를 설치합니다:+패키지를 설치합니다.
  
-<code lang=bash>+<code bash>
 make DESTDIR=$LFS install make DESTDIR=$LFS install
 </code> </code>
  
-마지막으로 유틸리티 심볼릭 링크를 생성합니다. 많은 프로그램과 스크립트는 gcc 대신 cc를 실행하는데, 이는 프로그램을 범용적으로 유지하기 위해 사용되므로 GNU C 컴파일러가 항상 설치되어 있지 않은 모든 종류의 UNIX 시스템에서 사용할 수 있니다. cc를 실행하면 시스템 관리자가 설치할 C 컴파일러를 자유롭게 결정할 수 있습니다:+마지막으로 유용한 심볼릭 링크를 생성합니다. 많은 프로그램과 스크립트는 **gcc** 대신 **cc**를 실행하는데, 이는 프로그램을 범용적으로 유지하고, GNU C 컴파일러가 항상 설치되어 있지 않은 모든 종류의 UNIX 시스템에서 사용할 수 있도록 합니다. 시스템 관리자가 사용할 C 컴파일러를 **cc**를 실행해서 원하는 대로 결정할 수 있습니다.
  
-<code lang=bash>+<code bash>
 ln -sv gcc $LFS/usr/bin/cc ln -sv gcc $LFS/usr/bin/cc
 </code> </code>
줄 106: 줄 106:
 ------ ------
  
-이 패키지에 대한 자세한 내용은 [[.:098-gcc-13.2.0|섹션 8.28.2"GCC의 내용"]]에 나와 있습니다.+이 패키지에 대한 자세한 내용은 [[.:098-gcc-13.2.0#8.28.2. GCC 패키지 구성|8.28.2"GCC 패키지 구성"]]에 나와 있습니다.
  • linuxfromscratch/12.1/057-gcc-13.2.0_-_pass_2.1715764122.txt.gz
  • 마지막으로 수정됨: 2024/05/15 09:08
  • 저자 baecy