Внутренняя ошибка компилятора при компиляции собственного кода Android - PullRequest
3 голосов
/ 09 августа 2010

В настоящее время я пытаюсь скомпилировать нативный код для Android. Код из порта OpenCV для Android. Я правильно вставил весь код в свой проект и соответственно отредактировал файлы 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 на false перед компиляцией и на истинную посткомпиляцию, но я уверен, что забуду об этом при каждом втором запуске

Кто-нибудь сталкивался с подобной проблемой или кто-нибудь знает, как это исправить? Это было бы очень полезно.

1 Ответ

2 голосов
/ 06 апреля 2011

Обходной путь - предварительно собрать код, вызывающий ошибку компилятора, с отключенной отладкой. Тогда принесите это как предварительно построенный. Затем вы можете построить остальное с помощью отладки. У меня была эта проблема (или похожая), и я разместил ее в Группе Google .

Ссылка на раздел Prebuilts Руководства разработчика.

...