如何知道ndk构建的gcc优化级别

如何知道ndk构建的gcc优化级别,gcc,android-ndk,makefile,java-native-interface,compiler-optimization,Gcc,Android Ndk,Makefile,Java Native Interface,Compiler Optimization,我正在使用NDK(jni)在Android上编写一些本机代码。 我想关闭gcc编译器优化。 现在我将LOCAL\u CFLAGS+=-O0添加到Android.mk,我不确定它是否工作 我编写了一些代码来测试循环开销,如下所示: // gettime for(int i = 0 ; i<10000;i++) { } // gettime //gettime 对于(int i=0;i,当启用优化时,编译器定义一个名为\uuuuu OPTIMIZE\uuuu的宏 如果将这些行插入到任何C文

我正在使用NDK(jni)在Android上编写一些本机代码。 我想关闭gcc编译器优化。 现在我将
LOCAL\u CFLAGS+=-O0
添加到Android.mk,我不确定它是否工作

我编写了一些代码来测试循环开销,如下所示:

// gettime
for(int i = 0 ; i<10000;i++)
{

}
// gettime
//gettime

对于(int i=0;i,当启用优化时,编译器定义一个名为
\uuuuu OPTIMIZE\uuuu
的宏

如果将这些行插入到任何C文件中,那么如果make标志不适用于该文件,则编译将失败

#ifdef __OPTIMIZE__
#error Optimization enabled. That's not right!
#endif
另一种可能是检查构建的二进制文件(.o或可执行文件)上的特定于arch的标志


ARM有一个指示优化级别的标志,但我认为Android工具链可能有点旧,无法正确使用它,因此YMMV。

请参见此处如何禁用优化:

基本上你需要做的就是添加

APP_OPTIM := debug

对于你的Application.mk文件

10k
inc
s很可能在10k时钟周期内完成。即使在“慢”处理器上,这也非常快。是的,我和你一起检查代码,
-O0
不工作,编译器只是抛出错误消息。那么如何正确地关闭android jni项目的优化?
APP_OPTIM := debug