Android MuPDF 阅读器设置
Posted
技术标签:
【中文标题】Android MuPDF 阅读器设置【英文标题】:Android MuPDF Reader Set Up 【发布时间】:2014-01-31 20:16:52 【问题描述】:我需要在 Fragment 中显示 PDF 文档,经过一些在线研究,我遇到了最受欢迎的开源阅读器 MuPDF 阅读器,我按照此链接 http://mupdf.blogspot.in/ 中的所有步骤操作。当我尝试按照上面的博客使用以下命令通过 Cyqwin 编译这个 MuPDF 库时
**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**
在网上尝试解决这个问题后,我遇到了一个与我的问题非常相似的 *** 问题
http://***.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
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
从错误信息看,你的工具链好像不包含 gcc ? 我的一位同事认为 NDK 安装失败,因为 gcc 编译器是 NDK 的一部分。 谢谢KenS,我解决了,我在用于NDK 9r 版本的Application.mk 文件中指定了错误的工具链版本。 @sajay 那么你做了什么来解决这个问题?我正在使用 NDK-r9c,它适用于 MuPDF 1.3,但是当我编译 MuPDF 1.1 时,出现了这个错误。 【参考方案1】:我刚刚解决了一个这样的问题!我使用 gcc 在我的项目中编译了一个 xxx.S 文件,它抛出了这样的错误
"../src/__sys.S:20: 错误: lo register required -- 'stmdb r0!,r4-r11'"
还有这个
"../src/__sys.S:20: 错误:Thumb-2 指令仅在统一语法中有效 -- `stmdb r0!,r4'"
我从这个 wiki 找到了一个解决方案 https://wiki.ubuntu.com/ARM/Thumb2PortingHowto#Types_of_Assembly_Language
并通过在我的 xxx.S 文件的开头添加这一行来解决我的问题
.syntax unified
希望这对你有用!
【讨论】:
以上是关于Android MuPDF 阅读器设置的主要内容,如果未能解决你的问题,请参考以下文章