【问题标题】:Error on building android-ndk-assets构建 android-ndk-assets 时出错
【发布时间】:2012-08-16 04:47:32
【问题描述】:

我想从 C++ 代码中加载资源。并尝试重复this way。但是当我尝试构建它时,我得到:

E:\Android\Samples\android-ndk-assets\project>e:\Android\android-ndk-r8b\ndk-build
Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
"Compile thumb : png <= pngrtran.c
jni/libpng/pngrtran.c: In function 'png_do_expand':
jni/libpng/pngrtran.c:3790:1: internal compiler error: in reload, at reload1.c:1061
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [obj/local/armeabi/objs-debug/png/pngrtran.o] Error 1

【问题讨论】:

    标签: android-ndk


    【解决方案1】:

    我也遇到了这个问题。另一种解决方法是将库添加为 ARM 代码而不是 Thumb 代码,方法是将以下行添加到您的 makefile:

    LOCAL_ARM_MODE := arm
    

    使用 ARM 模式应该没有问题... ARM 指令需要两倍于 Thumb 指令的空间,但也更复杂,能够在一条指令中完成更多任务,因此取决于编译器的聪明程度生成的代码可能更大或更小,也可能更高效或更低效,但应该以相同的结果执行。

    【讨论】:

      【解决方案2】:

      我在 android-ndk-r8b 中遇到了同样的错误。 看起来像 GCC 中的错误。您已经提交错误报告了吗?

      我找到了出错的代码:

       if (*(sp - 5) == red_high &&
            *(sp - 4) == red_low &&
            *(sp - 3) == green_high &&  //this line make error
            *(sp - 2) == green_low &&   //this line make error
            *(sp - 1) == blue_high &&
            *(sp    ) == blue_low)
         {
            *dp-- = 0;
            *dp-- = 0;
         }
      

      【讨论】:

      • 不,我不提交错误报告。
      【解决方案3】:

      我在 android-ndk-r8b 中也有类似的错误。调用带有 NDK_DEBUG 标志的 ndk-build 时会发生这种情况:

      ndk-build NDK_DEBUG=1

      尝试将 NDK_BUILD 标志设置为 0。它应该可以编译。当然它不会是可调试的:(

      ndk-build NDK_DEBUG=0

      【讨论】:

      • 您可以通过引用或推测为什么 NDK_DEBUG 标志会影响此编译错误来大大改进您的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 2018-06-25
      相关资源
      最近更新 更多