Android ndk Clang在-O3(但不在-O2)上公开变量名
我使用的是Android NDK,版本13b。叮当声版本是3.8.256229 当我使用带有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未
-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和日志库的链接,如果这提供了任何线索的话。