차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
| linuxfromscratch:12.1:152-stripping [2024/05/27 12:25] – 만듦 - 바깥 편집 127.0.0.1 | linuxfromscratch:12.1:152-stripping [2024/06/18 04:01] (현재) – [8.82. 스트립] baecy | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| + | ^ Linux From Scratch - Version 12.1-systemd | ||
| + | ^ Chapter 8. Installing Basic System Software | ||
| + | |[[.: | ||
| + | |||
| + | |디버깅 심볼 | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== 8.82. 스트립 ===== | ||
| + | |||
| + | 이 장의 내용은 선택적인 사항입니다. 사용자가 프로그래머가 아니고 시스템 소프트웨어의 디버깅을 수행할 계획이 없는 경우 바이너리와 라이브러리에서 디버깅 심볼과 일부 불필요한 심볼 테이블 항목을 제거하여 시스템 크기를 약 2GB 줄일 수 있습니다. 이는 일반적인 Linux 사용자에게는 큰 불편을 초래하지 않습니다. | ||
| + | |||
| + | 아래에 언급된 명령을 사용하는 대부분의 사람들은 어려움을 겪지 않습니다. 그러나 실수로 인해 새 시스템을 사용할 수 없게 만드는 것은 쉽습니다. 따라서 **strip** 명령을 실행하기 전에 현재 상태의 LFS 시스템을 백업하는 것이 좋습니다. | ||
| + | |||
| + | **strip** 명령은 // | ||
| + | |||
| + | 선택한 라이브러리의 디버깅 심볼은 Zlib로 압축되어 별도의 파일에 보존됩니다. 이 디버깅 정보는 나중에 BLFS에서 [[beyondlinuxfromscratch: | ||
| + | |||
| + | **strip**은 처리 중인 바이너리 또는 라이브러리 파일을 덮어쓴다는 점에 유의하세요. 이로 인해 파일의 코드나 데이터를 사용하는 프로세스가 충돌할 수 있습니다. 스트립을 실행 중인 프로세스가 영향을 받으면 스트립되는 바이너리 또는 라이브러리가 파괴되어 시스템을 완전히 사용할 수 없게 될 수 있습니다. 이 문제를 방지하려면 일부 라이브러리와 바이너리를 /tmp로 복사하여 스트립한 다음 **install** 명령으로 다시 설치합니다. ([[.: | ||
| + | |||
| + | <WRAP info center round 90%> | ||
| + | **참고** \\ | ||
| + | ELF 로더의 이름은 64비트 시스템에서는 ld-linux-x86-64.so.2, | ||
| + | </ | ||
| + | |||
| + | <WRAP important center round 90%> | ||
| + | **중요** \\ | ||
| + | 책에서 지정한 버전과 다른 버전이 있는 패키지가 있는 경우(보안 권고에 따르거나 개인 취향에 따라) '' | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | save_usrlib=" | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | cd /usr/lib | ||
| + | |||
| + | for LIB in $save_usrlib; | ||
| + | objcopy --only-keep-debug --compress-debug-sections=zlib $LIB $LIB.dbg | ||
| + | cp $LIB /tmp/$LIB | ||
| + | strip --strip-unneeded /tmp/$LIB | ||
| + | objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB | ||
| + | install -vm755 /tmp/$LIB /usr/lib | ||
| + | rm /tmp/$LIB | ||
| + | done | ||
| + | |||
| + | online_usrbin=" | ||
| + | online_usrlib=" | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | $(cd /usr/lib; find libnss*.so* -type f)" | ||
| + | |||
| + | for BIN in $online_usrbin; | ||
| + | cp / | ||
| + | strip --strip-unneeded /tmp/$BIN | ||
| + | install -vm755 /tmp/$BIN /usr/bin | ||
| + | rm /tmp/$BIN | ||
| + | done | ||
| + | |||
| + | for LIB in $online_usrlib; | ||
| + | cp / | ||
| + | strip --strip-unneeded /tmp/$LIB | ||
| + | install -vm755 /tmp/$LIB /usr/lib | ||
| + | rm /tmp/$LIB | ||
| + | done | ||
| + | |||
| + | for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \ | ||
| + | | ||
| + | | ||
| + | case " | ||
| + | *$(basename $i)* ) | ||
| + | ;; | ||
| + | * ) strip --strip-unneeded $i | ||
| + | ;; | ||
| + | esac | ||
| + | done | ||
| + | |||
| + | unset BIN LIB save_usrlib online_usrbin online_usrlib | ||
| + | </ | ||
| + | |||
| + | 파일 형식이 인식되지 않아 많은 수의 파일이 오류로 표시될 수 있습니다. 이러한 경고는 안전하게 무시해도 됩니다. 해당 파일이 바이너리가 아닌 스크립트임을 나타냅니다. | ||