Android ndk Clang在-O3(但不在-O2)上公开变量名

Android ndk Clang在-O3(但不在-O2)上公开变量名,android-ndk,clang,Android Ndk,Clang,我使用的是Android NDK,版本13b。叮当声版本是3.8.256229 当我使用带有-O3或-Ofast编译器标志的铿锵工具链来构建共享库时,全局变量名在外部可见。这不会发生在-O2或以下位置,也不会发生在使用GCC 4.9工具链时 我如何确保在使用叮当声时符号被正确地剥去 编译器标志(armeabi-v7a目标): -O3-Wall-D\uu ANDROID\uuuuufvisibility=hidden-Wl,-s-Wno有时未初始化-Wno可能未初始化-Wno未知警告选项-Wno未

我使用的是Android NDK,版本13b。叮当声版本是3.8.256229

当我使用带有
-O3
-Ofast
编译器标志的铿锵工具链来构建共享库时,全局变量名在外部可见。这不会发生在
-O2
或以下位置,也不会发生在使用GCC 4.9工具链时

我如何确保在使用叮当声时符号被正确地剥去

编译器标志(armeabi-v7a目标):

-O3-Wall-D\uu ANDROID\uuuuufvisibility=hidden-Wl,-s-Wno有时未初始化-Wno可能未初始化-Wno未知警告选项-Wno未知属性-fdata节-fffunction节-fno异常-fno展开表-Wl,--gc节-std=gnu++11-fno rtti-march=armv7-a-mthumb-mfloat abi=softfp-mfpu=vf3-d16

链接器标志:


-O5-Wl,--gc-sections-Wl,-s-march=armv7-a-Wl,--fix-cortex-a8

您能用测试用例提交一个bug吗?我试图编写一个最小的测试用例,但无法复制这个问题。我用同样的结构做了一个单独的项目(用一个JNIEXPORT函数来确保一切不会被优化),它正确地隐藏了变量。除非有一个与代码大小或其他相关的bug,否则我不知道是什么导致了这个问题。我遇到问题的共享库使用了两个静态库和指向GLESv2、OpenSLES、android和日志库的链接,如果这提供了任何线索的话。