2012-03-24 1 views
2

내 기본 앱에 사용되는 메모리가 적은 소형 Android 시스템을 구축했습니다. Android 크로스 툴 체인 (libC++ 및 libm없이 연결)의 기본 lib 링크 수정 방법

나는 내 모든 애플 리케이션 libm.so 그들은 C에서 순수하게 기록 된 경우에도 libstdc++.so에 연결하고 libm (예를 들어,이 sin())의 모든 기능을 사용하지 않는 것을 발견했다. lib는 20K 이상의 메모리를 사용합니다.

libstdc++libm의 연결 고리를 제거하려면 어떻게해야합니까?

답변

1

원칙적으로 목표를 무시하지 않고 Android는 많은 앱 라이브러리를 모든 앱에서 공유 사용하기 위해 메모리에 미리로드 한 zygote 프로세스의 하위 항목을 포크하여 앱을 실행합니다. 많은 dalvik 클래스도 미리로드됩니다.

이러한 공유 매핑을 상속하므로 실제로는 실제 메모리가 거의 사용되지 않습니다. 응용 프로그램이 실행되는 각 하위 프로세스에 대해 미리로드 된 라이브러리 및 클래스는 미리로드 된 코드 공간의 데이터를 추적하기위한 메모리와 쓰기 가능한 데이터 공간.

이 때문에 실제로 필요한 모든 프로그램에 대다수 만 필요한 모든 것을 제공하기 위해 메모리를 절약하여 자신이 필요로하는 (공유 할 수없는) 복사본을로드해야합니다. 또한, ndk 라이브러리로 작성된 개발자는 C 만 사용할 수 있지만 안드로이드 앱은 전체적으로 C++ 프로그램이므로 플랫폼 코드가 포함되어 있습니다.

+0

+1 .. dalvik은 이미 libm 및 libstdC++와 연결되어 있으므로 ndk 라이브러리가로드 된 프로세스에 이미 매핑되어 있습니다 (다른 사람이 'em'을 사용하지 않아도). 내 무의미한 답변을 제거했습니다 :-) – richq

관련 문제