代码之家  ›  专栏  ›  技术社区  ›  Pandoro

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

  •  3
  • Pandoro  · 技术社区  · 15 年前

    目前我正在尝试为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可以错误的预编译和真正的后编译,但我确信我会忘记它的每一秒运行。

    有人遇到过类似的问题吗?有人知道如何解决这个问题吗?这将是一个很大的帮助。

    1 回复  |  直到 12 年前
        1
  •  2
  •   Peter Tseng    14 年前

    解决方法是在关闭调试的情况下预生成导致编译器错误的代码。然后把它作为预制品带来。然后您可以用debug构建其余部分。我有这个问题(或类似的),并张贴在 Google Group .

    请参阅《开发指南》的“预构建”部分。