ARM Linux下编译freetype、sdl、sdl_ttf

当前使用环境

  • 开发平台:ubuntu18.04.1 x86_64
  • 海思硬件:GK7605
  • 交叉编译工具链:arm-gcc6.3-linux-uclibceabi-(其他平台及工具链类似)

1.下载库及依赖库源码

freetype:点击直接下载2.6.1版本 或 点击跳转下载目录

SDL2:点击直接下载2.0.12版本 或 点击跳转下载目录

SDL2_ttf:点击直接下载2.0.15版本 或 点击跳转下载目录

zlib:点击直接下载1.2.11版本 或 点击跳转下载目录

2.编译库文件

拷贝下载后的源码文件至linux编译目录下,此处我定义了一个专门的如下:

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ pwd
/home/xn/00.research/GK7605V100/thirdparty/libfreetype_sdl
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ ll
总用量 12820
drwxrwxr-x 2 xn xn    4096 3月   2 10:47 ./
drwxrwxr-x 4 xn xn    4096 3月   2 10:47 ../
-rwxr----- 1 xn xn 2302080 9月   4  2020 freetype-2.6.1.tar.gz*
-rwxr----- 1 xn xn 5720162 9月   4  2020 SDL2-2.0.12.tar.gz*
-rwxr----- 1 xn xn 4479718 9月   4  2020 SDL2_ttf-2.0.15.tar.gz*
-rwxr----- 1 xn xn  607698 9月   4  2020 zlib-1.2.11.tar.gz*
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$

在当前目录创建一个install目录,用于存放编译安装的库

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ mkdir install
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ ls
freetype-2.6.1.tar.gz  install  SDL2-2.0.12.tar.gz  SDL2_ttf-2.0.15.tar.gz  zlib-1.2.11.tar.gz

2.1 zlib编译

  • 解压并进入目录
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ tar zxvf zlib-1.2.11.tar.gz 
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ cd zlib-1.2.11/
  • 配置并生成Makefile
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ export CC=arm-gcc6.3-linux-uclibceabi-gcc
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ ./configure --prefix=$PWD/../install --static
Compiler error reporting is too harsh for ./configure (perhaps remove -Werror).
** ./configure aborting.
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ 

    此处报错,需修改configure,使用vi configure打开,删除或注释如下部分,保存退出

 然后重新执行生成命令,发现已经执行成功:

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ export CC=arm-gcc6.3-linux-uclibceabi-gcc
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ ./configure --prefix=$PWD/../install --static
Building static library libz.a version 1.2.11 with arm-gcc6.3-linux-uclibceabi-gcc.
Checking for size_t... Yes.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for strerror... Yes.
Checking for unistd.h... Yes.
Checking for stdarg.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ ls
adler32.c       configure      deflate.c  gzclose.c  INDEX       inflate.c   Makefile.in   os400          trees.c    zconf.h          zlib.3.pdf       zlib.pc.in
amiga           configure.log  deflate.h  gzguts.h   infback.c   inflate.h   make_vms.com  qnx            trees.h    zconf.h.cmakein  zlib.h           zutil.c
ChangeLog       contrib        doc        gzlib.c    inffast.c   inftrees.c  msdos         README         uncompr.c  zconf.h.in       zlib.map         zutil.h
CMakeLists.txt  crc32.c        examples   gzread.c   inffast.h   inftrees.h  nintendods    test           watcom     zlib2ansi        zlib.pc
compress.c      crc32.h        FAQ        gzwrite.c  inffixed.h  Makefile    old           treebuild.xml  win32      zlib.3           zlib.pc.cmakein
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ 
  • 编译并安装
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ make

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ make install

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ ls ../install/lib/
libz.a  pkgconfig
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/zlib-1.2.11$ 

 2.2 freetype编译

  •  解压并进入目录
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ tar zxvf freetype-2.6.1.tar.gz

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ cd freetype-2.6.1/
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ 
  • 配置并生成Makefile
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ ./configure CC=arm-gcc6.3-linux-uclibceabi-gcc --host=arm-gcc6.3-linux-uclibceabi --prefix=$PWD/../install LDFLAGS=-L$PWD/../install/lib CFLAGS=-I$PWD/../install/include --enable-shared=no --enable-static=yes

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ ls
autogen.sh  ChangeLog     ChangeLog.21  ChangeLog.23  CMakeLists.txt  configure  docs     Jamfile   Makefile     objs    README.git  version.sed
builds      ChangeLog.20  ChangeLog.22  ChangeLog.24  config.mk       devel      include  Jamrules  modules.cfg  README  src         vms_make.com
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$
  •    编译并安装
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ make

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ make install

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$ ls ../install/lib/
libfreetype.a  libfreetype.la  libz.a  pkgconfig
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/freetype-2.6.1$

 2.3 SDL2编译

  •   解压并进入目录
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ tar zxvf SDL2-2.0.12.tar.gz

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ cd SDL2-2.0.12/
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$
  • 配置并生成Makefile
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ ./configure CC=arm-gcc6.3-linux-uclibceabi-gcc --host=arm-gcc6.3-linux-uclibceabi --prefix=$PWD/../install LDFLAGS=-L$PWD/../install/lib CFLAGS=-I$PWD/../install/include --enable-shared=no --enable-static=yes

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ ls
acinclude        CMakeLists.txt            CREDITS.txt  Makefile.in       README-SDL.txt        sdl2-config-version.cmake     src                WhatsNew.txt
Android.mk       cmake_uninstall.cmake.in  debian       Makefile.minimal  README.txt            sdl2-config-version.cmake.in  test               Xcode
android-project  config.log                docs         Makefile.os2      sdl2-config           sdl2.m4                       TODO.txt           Xcode-iOS
autogen.sh       config.status             include      Makefile.pandora  sdl2-config.cmake     sdl2.pc                       VisualC
BUGS.txt         configure                 INSTALL.txt  Makefile.psp      SDL2Config.cmake      sdl2.pc.in                    VisualC.html
build-scripts    configure.ac              libtool      Makefile.rules    sdl2-config.cmake.in  SDL2.spec                     VisualC-WinRT
cmake            COPYING.txt               Makefile     Makefile.wiz      sdl2-config.in        SDL2.spec.in                  wayland-protocols
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$
  •    编译并安装
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ make

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ make install

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$ ls ../install/lib/
cmake  libfreetype.a  libfreetype.la  libSDL2.a  libSDL2.la  libSDL2main.a  libSDL2main.la  libSDL2_test.a  libSDL2_test.la  libz.a  pkgconfig
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2-2.0.12$

2.4 SDL2_ttf编译

  • 解压并进入目录

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ tar zxvf SDL2_ttf-2.0.15.tar.gz

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl$ cd SDL2_ttf-2.0.15/
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$
  • 配置并生成Makefile
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ ./configure CC=arm-gcc6.3-linux-uclibceabi-gcc --host=arm-gcc6.3-linux-uclibceabi --prefix=$PWD/../install --with-ft-prefix=$PWD/../install --with-sdl-prefix=$PWD/../install --enable-shared=no --enable-static=yes

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ ls
acinclude   CHANGES.txt     config.log     configure.in  external    libtool      Makefile.in  SDL2_ttf.pc.in    SDL_ttf.h   VisualC-WinRT
aclocal.m4  CMakeLists.txt  config.status  COPYING.txt   gcc-fat.sh  ltmain.sh    missing      SDL2_ttf.spec     showfont.c  Xcode
Android.mk  compile         config.sub     debian        glfont.c    Makefile     README.txt   SDL2_ttf.spec.in  version.rc  Xcode-iOS
autogen.sh  config.guess    configure      depcomp       install-sh  Makefile.am  SDL2_ttf.pc  SDL_ttf.c         VisualC
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$
  •    编译并安装
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ make

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ make install

《中间打印省略。。。》

(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$ ls ../install/lib/
cmake          libfreetype.la  libSDL2.la     libSDL2main.la  libSDL2_test.la  libSDL2_ttf.la  pkgconfig
libfreetype.a  libSDL2.a       libSDL2main.a  libSDL2_test.a  libSDL2_ttf.a    libz.a
(base) xn@xn-virtual:~/00.research/GK7605V100/thirdparty/libfreetype_sdl/SDL2_ttf-2.0.15$

错误1:若出现如下错误:

arm-linux-uclibceabi/bin/ld: cannot find -lpng16
arm-linux-uclibceabi/bin/ld: cannot find -lharfbuzz

解决1:需要交叉编译libpng和libharfbuzz,或者在编译freetype时configure增加配置选项“--with-png=no --with-harfbuzz=no”

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值