android - 如何修改 Android 交叉工具链的默认 lib 链接(不使用 libc++ 和 libm 进行链接)

标签 android c android-ndk dynamic-linking

我构建了一个小型 Android 系统,它为我的 native 应用程序使用了更少的内存。

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

如何删除libstdc++libm的链接?

最佳答案

在原则上不放弃您的目标的情况下,Android 通过从 zygote 进程中 fork 出一个子进程来启动应用程序,该进程已将大量系统库预加载到内存中以供所有应用程序共享使用。许多 dalvik 类也已预加载。

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

因此,它实际上节省了内存,为所有应用程序提供只有大多数人需要的东西,而不是让需要它的应用程序加载他们自己的(不可共享的)副本。此外,虽然开发人员编写的 ndk 库可能只使用 C,但由于包含平台代码 fragment ,Android 应用程序作为一个整体不可避免地是 C++ 程序。

关于android - 如何修改 Android 交叉工具链的默认 lib 链接(不使用 libc++ 和 libm 进行链接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9852896/

相关文章:

javascript - Uncaught ReferenceError : PhoneGap is not Defined

c - 逐行解析项目列表,然后逐个字符解析

c - mac osx 开发环境

android - 如何让 JHC 与 android ndk 合作?

c++ - 什么是 SWIG 警告 503?

android - 将字段动态添加到 Android 中的布局

android - 视频播放完成后如何关闭youtube API的standAlonePlayer

android - 如何在 Go 和 Android 之间使用 RSA

C程序判断一个数是否为回文数

c++ - 代码无法使用 Android NDK 编译