그것이 다른 라이브러리를위한 것이지만 glibc라면 ... glibc는 물건이 "하드 코딩 된"장소이기 때문에 빠른 방법이 없을 것이라고 생각합니다. glibc는 커널 버전에 적합하며 로더는 실제로 올바른 작업을 수행하는 인스턴스입니다 LD_LIBRARY_PATH
.
아마도 올바른 방법은 다음과 같습니다.
LD_LIBRARY_PATH="/opt/myglibc/;..." /opt/myglibc/ld-linux.so.2 the_program`
그래도 작동하는지 확실하지 않습니다.
어쨌든 검색 경로가 때때로 연결되고 glibc가 항상 OS / 커널에 맞아야하므로 대체 glibc를 사용하려면 아직 프레임 워크를 구현해야한다고 생각합니다. 따라서 일반 바이너리, IMO는있을 수 없습니다. 데비안의 멀티 아키는 사소한 것이 아니라 여전히 할 수 있음을 보여줍니다. 대상 아키텍처 외에 라이브러리를 식별 할 수있는 다른 방법이 있어야한다면.
웹 사이트에서 방금 다른 관련 스레드를 제공했습니다.
거기에 허용되는 답변에는 glibc 문제를 해결하는 것으로 보이는 rtldi 라는 프로그램에 대한 링크가 포함되어 있습니다. 2004 년부터는 더 이상 링커에서 제대로 작동하지 않을 수도 있지만 조사해 볼 가치가 있습니다. 소스는 GPLv2입니다.
여호 바, 여호 바
내 친구가 공유 라이브러리의 실제 사용이 과대 평가되었다는 생각을 한 번 생각해 냈습니다. 그는 공유 라이브러리가 컴퓨터의 메모리를 중복으로 채우지 않는 것이 좋지만 개별 응용 프로그램 인스턴스를 고려하면 몇 MB에 불과하다는 점을 지적합니다.
자체 glibc 제공과 같은 작업에 의존하는 응용 프로그램은 거의 없습니다. 긴 분석 시간을 절약하면 작업을 완료한다는 의미에서 "직접 응용 프로그램"이라고합니다. 예를 들어 웹 브라우저, 메일 사용자 에이전트, 사무복 및 음악 플레이어를 통해 사용자는 원하는 것을 얻을 수 있으며 사용자 당 몇 개의 인스턴스 만 있습니다. 다른 한편으로, 시스템 서비스, 창 관리자, 심지어 전체 데스크탑 환경까지도 모두 매우 중요하지만, 지원이 가능하고 종종 충분히 드물거나 중요하지 않기 때문에 사람들은 자신의 glibc를 기꺼이 제공 할 것입니다.
"즉시 응용 프로그램"의 수는 사용자 당 절대적으로 적으며 요즘 "기본"OS 및 DE가 생성하는 것과 비교하여 상대적으로 적습니다. Chrome, Firefox와 같은 즉각적인 응용 프로그램이 정적으로 컴파일 된 경우 평균 시스템에 대한 추가 메모리 요구 사항은 몇 100MB입니다. 오늘날의 수많은 GB 시스템에서는 그다지 멀지 않은 논쟁은 즉각적인 애플리케이션을위한 정적 인 링크가 옵션이 될 수 있습니다.
엄청나게 빠른 스왑 인 / 아웃을 허용하는 스왑 공간 및 SSD의 개념도 있으며, 이는 증가하는 메모리 요구 사항을 처리하는 데 도움이됩니다.
여기에서 논의 된 glibc 문제는 정적 링크를 통해 실제로 해결되지는 않지만 웹 브라우저와 같은 응용 프로그램의 경우 X 프로토콜, 일부 사운드 데몬 및 일부 커널이 유일한 인터페이스로 포함되는 일종의 자체 포함 배포 형식을 고려할 수 있습니다. 장점은 라이브러리 버전 비 호환성이 줄어든다는 것입니다.
du -h /lib
) 시도 할 수 있지만 정적으로 컴파일 된 경우 각 크기의 RAM이 필요합니다. 그리고 모든 응용 프로그램은 그것들과 함께 컴파일되었습니다. 예를 들어 동일한 라이브러리 스택을 사용하는 두 개의 앱이 있으므로 이제 두 배의 메모리가 필요합니다. 세 개의 앱? 세 배나. 캐싱의 이점을 크게 무효화 할 것입니다 ...