编译本机Android代码时出现内部编译错误

时间:2010-08-09 14:59:40

标签: android gcc android-ndk

目前我正在尝试为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

根据我在互联网上发现的内容,这是由编译的优化级别引起的。只要代码没有编译,以便以后可以调试,一切都应该没问题。

现在显然可以通过在Application.mk中设置APP-OPTIM := release或将-O2添加到LOCAL_CFLAGS来避免这种情况。我试过两个,但我仍然得到这个错误。

现在我并不关心调试我的本机代码,但我想启用基本调试。而且我不希望每次想要编译时都在我的清单中继续切换android:debuggable。我甚至不确定它是否可以,如果我只是将android:debuggable设置为false pre compiling和true post post compiling,但我相信我会忘记它每一次运行。

有没有人遇到类似的问题,或者有人知道如何解决此问题?这将是一个很大的帮助。

1 个答案:

答案 0 :(得分:2)

解决方法是预先构建代码,导致编译器错误并关闭调试。然后把它作为预建的。然后你可以用debug来构建其余的。我遇到了这个问题(或类似问题),并发布在Google Group

参考开发指南的Prebuilts部分。