如何修改Android cross toolchain的默认库链接(没有libc+;+;和libm的链接)

如何修改Android cross toolchain的默认库链接(没有libc+;+;和libm的链接),android,c,android-ndk,dynamic-linking,Android,C,Android Ndk,Dynamic Linking,我已经建立了一个小型的Android系统,为我的本地应用程序使用更少的内存 我发现我的所有应用程序都将链接到libm.so和libstdc++.so,即使它们完全是用C编写的,并且不使用libm中的任何函数(例如sin())。该库使用超过20K的内存 我如何才能消除libstdc++和libm之间的联系?原则上,Android通过从zygote进程中分出一个子进程来启动应用程序,zygote进程已将大量系统库预加载到内存中,供所有应用程序共享使用。许多dalvik类也是预加载的 因为您继承了这些

我已经建立了一个小型的Android系统,为我的本地应用程序使用更少的内存

我发现我的所有应用程序都将链接到
libm.so
libstdc++.so
,即使它们完全是用C编写的,并且不使用
libm
中的任何函数(例如
sin()
)。该库使用超过20K的内存


我如何才能消除
libstdc++
libm
之间的联系?

原则上,Android通过从zygote进程中分出一个子进程来启动应用程序,zygote进程已将大量系统库预加载到内存中,供所有应用程序共享使用。许多dalvik类也是预加载的

因为您继承了这些共享映射,所以实际上消耗的物理内存非常少——对于应用程序运行的每个子进程,预加载库和类仅为跟踪预加载代码空间上的数据和可写数据空间消耗内存


因此,它实际上节省了内存,为所有应用程序提供了只有大多数应用程序才需要的东西,而不是让需要它的应用程序加载自己的(不可扫描)副本。此外,虽然开发人员编写的NDK库可能只使用C,但Android应用程序作为一个整体,不可避免地是包含了平台代码的C++程序。p> +1。。最重要的是,dalvik肯定已经与libm和libstdc++链接,因此它们已经在加载ndk库的过程中被映射(即使没有其他使用它们)。我删除了我毫无意义的回答:-)