2017-10-02 5 views
1

나는 glibc 2.23 소스를 다운로드하고 우분투 시스템에서 빌드하려고합니다. 내 연구를 위해 맞춤화 된 glibc의 수정 버전을 얻기 위해 특정 버전의 소스를 빌드해야하며, 로더 환경 변수 (예 : LD_PREDLOAD 또는 LD_LIBRARY_PATH)를 사용하는 연구용 앱에서만 사용됩니다.크기를 줄인 glibc를 만드는 방법은 무엇입니까?

다음과 같이 구축을 때, 나는 (11메가바이트에 대한 무게 libc.so) 출력으로 큰 파일을 가지고

:

  • 일부 지역 디렉토리에 소스를 다운로드 (의 말을하자/tmp를 /의 glibc /)
  • 은 빌드 결과에 대한 새로운 디렉토리 (/ tmp를 /의 glibc/빌드) 빌드 디렉토리에서
  • 실행 구성을 작성 :
  • < 빌드-DIR> $ ../configure --prefix = < 구축-DIR> 결과적으로, 빌드 프로세스는 libc.so 파일 un를 생성합니다. der build-dir은 11MB 크기입니다.

빌드 된 libc.so의 크기를 줄이기위한 방법이 있습니까?

p.s. 여기

내 시스템의 세부 사항은 다음과 같습니다 리눅스 버전 4.4.0-93 제네릭 (인 buildd @ lgw01-03) (GCC 버전 5.4.0 20160609 (우분투 5.4.0-6ubuntu1 ~ 16.04.4)) # 116- 소스에서 우분투 SMP (금) 8월 11일 세계 협정시 21시 17분 51초 2017

감사합니다 :)

+0

** ** 당신은 왜 소스에서 GNU libc를 만들고 싶고, 왜 그런 오래된 버전을 만들고 싶습니까? **이를 개선하고 동기를 부여하기 위해 ** 질문을 수정해야합니다. –

+0

필자가 필요로하는 연구를 위해 libc 할당자를 사용자 정의하기위한 소스에서 빌드해야하고 빌드 된 libc가 내 시스템의 기본 libc로 사용되지 않을 것입니다 (따라서 일부 로컬 빌드 - 내 연구 애플 리케이션에 나중에 사용하는 dir 폴더) –

+0

그게 아니라 귀하의 질문에 코멘트에 가야 –

답변

1

건물 glibc 나쁜 생각 될 수있다. this 및 거기에 몇 가지 의견을 참조하십시오. 그것의 현재 버전 GNU libc 2.26입니다 대신 전체 우분투 배포판 업그레이드를 고려 ...

../configure --prefix=빌드 디렉토리

은 (우분투 17.10 10 월 2017, 몇 주에 끝을 발매한다) autoconf -ed 소프트웨어에서 --prefix의 역할에 대한 오해. 이 소프트웨어는 소프트웨어가 설치된 디렉토리가 아닌 빌드 디렉토리와 관련이 있습니다.

어떤 방식이 있는가 (나는이 --prefix libc 때문에 시스템에이, 아마도 그것은 --prefix=/해야하지만 당신은주의 깊게 확인해야하므로 필수 당신해야 정확히 모른다) 빌드 된 libc.so의 크기를 줄이십시오?

매우 신중하게 strip(1)을 사용할 수 있지만 시스템을 손상시킬 위험이 있습니다.

그리고 리눅스 시스템의 거의 모든 소프트웨어에서 (shared) 사용 되었기 때문에 libc 크기를 줄일 필요가 없습니다.

참고 : musl-libc도 고려하십시오. GNU glibc와 잘 어울릴 수 있으며 실제로는 musl-gcc (제공된) 프로그램으로 만 사용됩니다.

일부 연구를 수행하는 경우 chroot(2)-ed 환경에서 작업하는 것이 타당합니다. schroot을 참조하십시오. 당신은 make install DESTDIR=/tmp/instmylibc의 도움으로 설치할 수 있고 그 다음에 /tmp/instmylibc을 적당히 복사하십시오. 읽기 more about autoconf

추신 위험한 실험을하기 전에 중요한 데이터를 최소한 백업하십시오. 나는 당신의 libc.so의 크기가 중요한 관심사가되어야한다고 생각하지 않습니다. 그러나 chroot 환경에서 debootstrap을 사용하여 chroot을 사용해야합니다.

+0

고마워 @ Basile 귀하의 대답에. 위에서 언급했듯이 연구 목적을 위해 사용자 정의 된 라이브러리를 만들어야합니다. 그럼, 내 시스템에 설치되어있는 기본 glibc (약 1.8MB의 가중치)가 제거된다는 의미입니까? –