是否可以从用Android NDK构建的共享库中删除符号?

 2023-01-20    289  

问题描述

我正在使用Android NDK构建用于在Java应用中使用的共享库.使用readelf检查发布版本生成的lib/armeabi-v7a/libXXXlib.so文件,它似乎包含我本机C/C ++代码的所有符号(函数,变量名).

的确,共享对象文件对于调试和发布构建似乎是相同的. (libs文件夹中输出的唯一差异是创建gsb.setup和gdbserver文件.)我在我的Application.mk中使用APP_CFLAGS += -O3的NDK设置的优化覆盖了优化. ,但我不希望发布版本通过包括-g标志来生成调试符号.

是否可以从用Android NDK构建的共享库中删除符号?

我找到了关于’在这两种情况下,debug debug,debug并发行,它留下了-g标志,因为,请引用评论:”我们生成二进制文件的符号版本,后来将其复制到最终项目的libs/directory时被剥离了”‘,另一个声明: .’

ndk-build肯定是从obj/armeabi-v7a/libXXXlib.so文件中剥离 ,因为这比最终在libs中创建的文件大得多,但是它似乎仍然留下了我所有的功能’和变量的名称完好无损.

是是JNI所需的我的功能名称(而不是仅在本机代码中的入口点)?

如果没有,我该如何删除不需要的符号?

推荐答案

随意设置默认可见性=隐藏,并设置属性可见性=您需要导出的几个函数(类似于dllexport)

中的默认值

以上所述是小编给大家介绍的是否可以从用Android NDK构建的共享库中删除符号?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25971.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。