在使用Android Studio 3.2.1
结合 NDK r16/r18
编译代码时候出现如下警告:
1 2 |
<built-in>: In function 'float abs(float)': <built-in>: warning: conflicts with previous declaration here [-Wattributes] |
关键是出现警告的代码文件中并不一定存在abs
函数的调用。
这个警告产生的条件是在编译器中指定了STL
,并且指定编译器为GCC
,调用的源代码文件中恰好有STL
的代码。
类似如下:
1 2 3 4 5 6 |
externalNativeBuild { cmake { cppFlags "-DANDROID_ARM_NEON=TRUE", "-DANDROID_TOOLCHAIN=gcc", "-DANDROID_PLATFORM=android-21", "-DANDROID_STL=c++_static" abiFilters 'armeabi-v7a' } } |
原因在于新版本的NDK r16/r18
中,对于GCC
部分的适配已经不是非常完善了,已经逐步迁移到CLANG(LLVM)
了。导致STL
进行编译的时候,会出现一些警告信息。这个警告信息是STL
库的警告信息,跟我们自己的代码没有关系。
只需要指定 "-DANDROID_TOOLCHAIN=clang
" 即可解决这个问题。
参考链接
NDK r13, -fexceptions -Wall --> warning: conflicts with previous declaration