Настройка Android-читателя MuPDF

Мне нужно отобразить документ PDF внутри фрагмента, после некоторых онлайн-исследований я наткнулся на программу чтения MuPDF, которая является наиболее предпочтительной программой для чтения с открытым исходным кодом, я выполнил все шаги по этой ссылке http://mupdf.blogspot.in/. Когда я пытаюсь скомпилировать эту библиотеку MuPDF через Cyqwin с помощью следующей команды, как в приведенном выше блоге

**Open Cygwin console,(just double click cygwin installation short-cut) and type following command and enter.
cd /cygdrive/<path to mupdf sorce folder/android ex. cd /cygdrive/c/mupdf-1.0-    source/android
/cygdrive/<path to ndk installation>/ndk-build ex. /cygdrive/c/ndk/ndk-build**

я получал следующую ошибку

**Compile thumb  : mupdfcore <= draw_path.c
Compile thumb  : mupdfcore <= draw_simple_scale.c
C:\cygwin64\tmp\ccEtywkX.s: Assembler messages:
C:\cygwin64\tmp\ccEtywkX.s:2248: Error: lo register required -- `str fp,[sp,#-4]!'
C:\cygwin64\tmp\ccEtywkX.s:2253: Error: lo register required -- `add fp,sp,#0'
C:\cygwin64\tmp\ccEtywkX.s:2257: Error: lo register required -- `str r0,[fp,#-16]'
C:\cygwin64\tmp\ccEtywkX.s:2258: Error: lo register required -- `str r1,[fp,#-20]'
C:\cygwin64\tmp\ccEtywkX.s:2259: Error: lo register required -- `str r2,[fp,#-24]'
C:\cygwin64\tmp\ccEtywkX.s:2260: Error: lo register required -- `str r3,[fp,#-28]'
C:\cygwin64\tmp\ccEtywkX.s:2262: Error: lo register required -- `ldr r3,[fp,#-24]'
C:\cygwin64\tmp\ccEtywkX.s:2263: Error: lo register required -- `str r3,[fp,#-8]'
C:\cygwin64\tmp\ccEtywkX.s:2267: Error: lo register required -- `ldr r3,[fp,#-16]'
C:\cygwin64\tmp\ccEtywkX.s:2269: Error: lo register required -- `str r2,[fp,#-16]'
C:\cygwin64\tmp\ccEtywkX.s:2270: Error: lo register required -- `ldr r2,[fp,#-20]'
C:\cygwin64\tmp\ccEtywkX.s:2272: Error: lo register required -- `str r1,[fp,#-20]'
C:\cygwin64\tmp\ccEtywkX.s:2276: Error: lo register required -- `ldr r3,[fp,#-8]'
C:\cygwin64\tmp\ccEtywkX.s:2278: Error: lo register required -- `str r3,[fp,#-8]'
C:\cygwin64\tmp\ccEtywkX.s:2281: Error: lo register required -- `ldr r3,[fp,#-8]'
C:\cygwin64\tmp\ccEtywkX.s:2285: Error: lo register required -- `ldr r3,[fp,#-28]'
C:\cygwin64\tmp\ccEtywkX.s:2286: Error: lo register required -- `ldr r2,[fp,#4]'
C:\cygwin64\tmp\ccEtywkX.s:2289: Error: lo register required -- `ldr r2,[fp,#-24]'
C:\cygwin64\tmp\ccEtywkX.s:2291: Error: lo register required -- `str r3,[fp,#-8]'
...
at the end this long operation terminates with the following ...
C:\cygwin64\tmp\ccEtywkX.s:4057: Error: lo register required -- `ldr r3,[fp,#-104]'
C:\cygwin64\tmp\ccEtywkX.s:4061: Error: lo register required -- `sub sp,fp,#8'
C:\cygwin64\tmp\ccEtywkX.s:4063: Error: lo register required -- `ldmfd sp!,{r4,fp,pc}'
/cygdrive/d/Sajay/Software/android-ndk-r9/build/core/build-binary.mk:345: recipe for target 'obj/local/armeabi/objs-debug/mupdfcore/__/__/draw/draw_simple_scale.o' failed
make: *** [obj/local/armeabi/objs-debug/mupdfcore/__/__/draw/draw_simple_scale.o] Error 1**

После попытки решить эту проблему в Интернете я столкнулся со следующим вопросом stackoverflow, который был очень похож на мою проблему.

http://stackoverflow.com/questions/15050042/error-while-building-mupdf-1-1-on-mac

я загрузил NDK 8b и попытался скомпилировать, но все равно получаю аналогичную ошибку в более короткой форме

Compile   : mupdf <= mupdf.c
/bin/sh: /cygdrive/d/user/Software/android-ndk-r8b-windows/android-ndk-r8b/toolchains/arm-linux-androideabi-4.8/prebuilt/windows/bin/arm-linux-androideabi-gcc: No such file or directory
/cygdrive/d/user/Software/android-ndk-r8b-windows/android-ndk-r8b/build/core/build-binary.mk:252: recipe for target 'obj/local/armeabi/objs-debug/mupdf/mupdf.o' failed
make: *** [obj/local/armeabi/objs-debug/mupdf/mupdf.o] Error 127

Любая помощь будет оценена по достоинству.

Заранее спасибо.


person sajay    schedule 13.01.2014    source источник
comment
Судя по сообщению об ошибке, ваша цепочка инструментов не включает gcc?   -  person KenS    schedule 13.01.2014
comment
Один из моих коллег предположил, что NDK не удалось правильно установить, поскольку компилятор gcc является частью NDK.   -  person KenS    schedule 13.01.2014
comment
Спасибо KenS, я решил, я указал неправильную версию цепочки инструментов в файле Application.mk, который я использовал для версии NDK 9r.   -  person sajay    schedule 20.01.2014
comment
@sajay Итак, что вы сделали, чтобы решить эту проблему? Я использую NDK-r9c, и он работал на MuPDF 1.3, но когда я скомпилировал MuPDF 1.1, вылезла эта ошибка.   -  person Compaq LE2202x    schedule 28.01.2014


Ответы (1)


Я только что решил такую ​​проблему! Я использовал gcc для компиляции файла xxx.S в своем проекте, и он выдал такую ​​​​ошибку

"../src/__sys.S:20: Ошибка: требуется регистрация -- 'stmdb r0!,{r4-r11}'"

и это

"../src/__sys.S:20: Ошибка: инструкция Thumb-2 действительна только в унифицированном синтаксисе -- `stmdb r0!,{r4}'"


Я нашел решение в этой вики https://wiki.ubuntu.com/ARM/Thumb2PortingHowto#Types_of_Assembly_Language< /а>

и решить мою проблему, добавив эту строку в начало моего файла xxx.S

.syntax unified

надеюсь, это будет полезно для вас!

person id9502    schedule 01.12.2015