目前我正在尝试为Android编译本机代码。代码来自Android的opencv端口。我在我的项目中正确地粘贴了所有代码,并相应地编辑了我的make文件。当我设置android:debuggable为false时,一切正常,我得到了我的本地库。当我在android:debuggable设置为true时,我会得到一个错误。以下是日志的一部分:
Compile++ thumb: cxcore <= AR_Still_Image/jni/cxcore/src/cxutils.cpp
AR_Still_Image/jni/cxcore/src/cxutils.cpp: In function 'void icvSort16u(ushort*, size_t, int)':
AR_Still_Image/jni/cxcore/src/cxutils.cpp:987: internal compiler error: in reload, at reload1.c:1173
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [AR_Still_Image/obj/local/armeabi/objs/cxcore/cxcore/src/cxutils.o] Error 1
从我在互联网上发现的情况来看,这是由编译的优化级别引起的。只要代码没有被编译,那就是可以调试,然后一切都应该是好的。
显然,通过设置
APP-OPTIM := release
在application.mk或添加
-O2
到
LOCAL_CFLAGS
. 我都试过了,但还是犯了这个错误。
现在,我并不太关心调试我的本地代码,但我希望启用基本调试。我不想一直切换Android:每次我想编译时都可以在我的清单中调试。我甚至不确定如果我只是设置了android是否还可以:debuggable可以错误的预编译和真正的后编译,但我确信我会忘记它的每一秒运行。
有人遇到过类似的问题吗?有人知道如何解决这个问题吗?这将是一个很大的帮助。