我正在使用Android NDK,修订版13b。铿锵声版本为3.8.256229。
当我使用带有-O3
或-Ofast
编译器标志的clang工具链来构建共享库时,全局变量名称变为外部可见。这不会发生在-O2
或更低版本或使用GCC 4.9工具链时。
使用clang时,如何确保符号被正确剥离?
编译器标志(armeabi-v7a target):
-O3 -Wall -D__ANDROID__ -fvisibility=hidden -Wl,-s -Wno-sometimes-uninitialized -Wno-maybe-uninitialized -Wno-unknown-warning-option -Wno-unknown-attributes -fdata-sections -ffunction-sections -fno-exceptions -fno-unwind-tables -Wl,--gc-sections -std=gnu++11 -fno-rtti -march=armv7-a -mthumb -mfloat-abi=softfp -mfpu=vfpv3-d16
链接器标志:
-O5 -Wl,--gc-sections -Wl,-s -march=armv7-a -Wl,--fix-cortex-a8