문서의 이전 판입니다!


5.6. GCC-13.2.0의 Libstdc++

Libstdc++는 표준 C++ 라이브러리입니다. C++ 코드를 컴파일하는 데 필요하지만(GCC의 일부는 C++로 작성됨), Libstdc++는 대상 디렉터리에서 아직 사용할 수 없는 Glibc에 의존하므로 gcc-pass1을 빌드할 때 설치를 보류해야 했습니다.

대략적인 빌드 시간: 0.2 SBU 필요한 디스크 공간: 1.1 GB


참고
Libstdc++는 GCC 소스의 일부입니다. 먼저 GCC의 압축을 풀고 gcc-13.2.0 디렉터리로 변경해야 합니다.

Libstdc++를 위한 별도의 빌드 디렉터리를 생성하고 그 디렉터리로 이동합니다.

mkdir -v build
cd build

컴파일을 위해 Libstdc++를 준비합니다.

../libstdc++-v3/configure \
    --host=$LFS_TGT \
    --build=$(../config.guess) \
    --prefix=/usr \
    --disable-multilib \
    --disable-nls \
    --disable-libstdcxx-pch \
    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0

  • –host=…
    방금 빌드한 크로스 컴파일러를 /usr/bin에 있는 컴파일러 대신 사용하도록 지정합니다.
  • –disable-libstdcxx-pch
    이 단계에서는 필요하지 않은 미리 컴파일된 include 파일을 설치하지 않도록 합니다.
  • –with-gxx-include-dir=/tools/$LFS_TGT/include/c++/13.2.0
    include 파일의 설치 디렉터리를 지정합니다. Libstdc++는 LFS용 표준 C++ 라이브러리이므로 이 디렉터리는 C++ 컴파일러($LFS_TGT-g++)가 표준 C++ include 파일을 검색하는 위치와 일치해야 합니다. 일반적인 빌드에서는 이 정보가 최상위 디렉터리에서 Libstdc++ counfigure옵션으로 자동 전달됩니다. 우리의 경우에는 이 정보를 명시적으로 제공해야 합니다. C++ 컴파일러는 include 파일 검색 경로에 시스템 루트 경로 $LFS(GCC-pass1 빌드 시 지정)를 앞에 추가하므로 실제로는 $LFS/tools/$LFS_TGT/include/c++/13.2.0에서 검색합니다. 아래 make install 명령에서 DESTDIR 변수와 이 스위치를 조합하면 헤더가 해당 경로에 설치됩니다.

Libstdc++를 컴파일합니다.

make
</make>
라이브러리를 설치합니다.
<code lang=bash>
make DESTDIR=$LFS install
libtool archive 파일은 크로스 컴파일에 해롭기 때문에 제거합니다.
rm -v $LFS/usr/lib/lib{stdc++{,exp,fs},supc++}.la


이 패키지에 대한 자세한 내용은 섹션 8.28.2, "GCC의 내용“에 있습니다.

  • linuxfromscratch/12.1/039-libstdc_from_gcc-13.2.0.1716812713.txt.gz
  • 마지막으로 수정됨: 2024/05/27 12:25
  • 저자 127.0.0.1