基于imx6的mupdf交叉编译

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

你可能感兴趣的:(交叉编译,mupdf)