它实际上看起来像NDK团队开始支持(或停止?),并且在构建系统中有它的痕迹,但是一些关键部分丢失了。好消息是它可以很容易实现。
转到NDK安装中的“build”目录并搜索LOCAL_STATIC_LIBRARIES的所有实例。复制并粘贴所有这些文件,并添加一个与LOCAL_STATIC_WHOLE_LIBRARIES执行相同操作的版本。
准确地说:在构建/核心/ build-binary.mk,你将需要:
LOCAL_STATIC_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_STATIC_LIBRARIES))
LOCAL_STATIC_WHOLE_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_STATIC_WHOLE_LIBRARIES))
[...]
static_libraries := $(call map,static-library-path,$(LOCAL_STATIC_LIBRARIES))
static_whole_libraries := $(call map,static-library-path,$(LOCAL_STATIC_WHOLE_LIBRARIES))
[...]
$(call module-add-static-depends,$(LOCAL_MODULE),$(LOCAL_STATIC_LIBRARIES))
$(call module-add-static-depends,$(LOCAL_MODULE),$(LOCAL_STATIC_WHOLE_LIBRARIES))
[...]
$(LOCAL_BUILT_MODULE): $(static_libraries) $(static_whole_libraries) $(shared_libraries)
[...]
$(LOCAL_BUILT_MODULE): PRIVATE_STATIC_LIBRARIES := $(static_libraries)
$(LOCAL_BUILT_MODULE): PRIVATE_WHOLE_STATIC_LIBRARIES := $(static_whole_libraries)
注STATIC_WHOLE和WHOLE_STATIC之间的差异 - 这是它是如何在NDK,我选择保持它,即使它是不一致的方式。
现在,最后在build/toolchains/arm-eabi-4.4.0/setup.mk中:已经有共享库的PRIVATE_WHOLE_STATIC_LIBRARIES块。您也可以选择将其添加到可执行文件中,尽管这很可能不是必需的。
This just came up - http://stackoverflow.com/questions/3549432/preventing-functions-from-being-stripped-from-a-static-library-when-linked-into-a/3559733#3559733 – fadden 2010-08-30 21:54:08
当然,这是我的个人回答家伙:),想发布这个问题作为一个问题,我可以接受它吗? (那么,或者我可以关闭我自己的问题作为一个骗局) – EboMike 2010-08-31 05:50:46