Ric*_*ich 6 java-native-interface android debug-symbols release-builds android-ndk
我正在构建一个共享库,以便在使用Android NDK的Java应用程序中使用.使用readelf来检查lib/armeabi-v7a/libXXXlib.so由发布版本生成的文件,它似乎包含我的家乡C/C++代码的所有符号(函数,变量名).
实际上,共享对象文件对于调试和发布版本似乎是相同的.(在输出唯一的区别libs文件夹是是否将gsb.setup和gdbserver正在创建的文件.)我重写优化利用NDK与设置APP_CFLAGS += -O3在我Application.mk,但我不希望发布版本通过生成调试符号包括-g它所做的旗帜.
我在SO上发表评论说'在这两种情况下,调试和发布,它会留下-g标志,因为引用注释,"我们生成二进制文件的符号版本,当它们被复制到最终项目时会被剥离libs /目录"',另一个说明:'如果没有名字,JNI找不到java的函数.'
ndk-build肯定是从obj/armeabi-v7a/libXXXlib.so文件中剥离了一些东西,因为它比最终创建的东西大得多libs,但它似乎仍然在文件中保留我的所有函数和变量的名称.
JNI 是否需要我所有的函数名称(而不仅仅是本机代码的入口点)?
如果没有,我该如何删除不需要的符号?
您可以随意设置默认的visibility = hidden,并为Windows中需要导出的少数函数设置属性visibility = default(类似于DLLEXPORT)
| 归档时间: |
|
| 查看次数: |
4315 次 |
| 最近记录: |