mupdf交叉编译(1.15.0源码)
1、解压压缩包;
2、编辑Makerules文件;修改如下:
......
# The following section has various cross compilation configurations.
#
# Invoke these as:
# make OS=mingw32-cross
#
# This does rely on the generated directory being populated with the font files.
# On a unix-like system, run 'make generate' before doing the cross compile.
# On Windows, run 'nmake -f scripts\fontdump.nmake' in a Visual Studio command prompt.
ifeq "$(OS)" "wasm"
OUT := build/wasm/$(build)
CC = emcc
CXX = em++
HAVE_GLUT=no
HAVE_X11=no
HAVE_OBJCOPY=no
HAVE_LIBCRYPTO=no
endif
#此处删除了编译器等选项,主要是在make之前,环境变量已经指定了CC、CXX、LD、AR等
ifeq "$(OS)" "imx6-cross"
CROSSCOMPILE=yes
HAVE_GLUT := no
endif
ifeq "$(OS)" "mingw64-cross"
OUT := build/$(OS)/$(build)
CC = x86_64-w64-mingw32-gcc
CXX = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-gcc
AR = x86_64-w64-mingw32-ar
WINDRES = x86_64-w64-mingw32-windres
HAVE_WIN32=yes
endif
......
3、命令行使用make OS=imx6-cross编译。在编译到字体库时,会报错:***/hexdump.exe:Syntax error: word unexpected (expecting ")")(大致是这样), 主要原因是该可执行文件不能在当前环境下运 行,解决方法:把改可执行文件拷贝到板子上,然后手动调用 hexdump.exe -s ***/generated/resource/fonts/(droid/han/noto/sil/urw)/(*.otf.c/*.ttf.c/*.cff.c/*.ttc.c) ***/resource/fonts/(droid/han/noto/sil/urw)/(*.otf/*.ttf/*.cff/*.ttc)。hexdump.exe的作用是把字体转换为c文件。
4、把在板子上生成的字体库c文件全部拷贝到虚拟机。然后修改Makefile文件,注销下面四行:
#generated/%.cff.c : %.cff $(HEXDUMP_EXE) ; $(QUIET_GEN) $(MKTGTDIR) ; $(HEXDUMP_EXE) -s $@ $<
#generated/%.otf.c : %.otf $(HEXDUMP_EXE) ; $(QUIET_GEN) $(MKTGTDIR) ; $(HEXDUMP_EXE) -s $@ $<
#generated/%.ttf.c : %.ttf $(HEXDUMP_EXE) ; $(QUIET_GEN) $(MKTGTDIR) ; $(HEXDUMP_EXE) -s $@ $<
#generated/%.ttc.c : %.ttc $(HEXDUMP_EXE) ; $(QUIET_GEN) $(MKTGTDIR) ; $(HEXDUMP_EXE) -s $@ $<
5、完成上面的步骤后,基本上就可以编译出需要的静态库。但是在编译时也会报错:undefined reference to `pthread_join';undefined reference to `pthread_create'。这个是编译Main tool和viewers时出错,这个错误不影响镜头库的生成,主要两个库libmupdf.a和libmupdf-third.a