当前使用环境

  • 开发平台: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”

ARM Linux下编译freetype、sdl、sdl_ttf相关推荐

  1. arm linux下编译库System.Net.Primitives.dll和System.Xml.XmlSerializer.dll

    1.环境: /home/jello # uname -a Linux  3.10.0 #2 SMP Mon Mar 6 17:52:09 CST 2017 armv7l GNU/Linux 2.获取m ...

  2. linux pfn,ARM Linux下的page和pfn之间转换的宏。

    ARM Linux下的page和pfn之间转换的宏如下: 1)page_to_pfn 2)pfn_to_page 这两个宏依赖于内核编译时,选择的内存模型.在include/asm-generic/m ...

  3. ARM Linux下UPnP使用

    ARM Linux下UPnP使用   一.UPnP简介   UPnP(Universal Plug and Play)技术是一种屏蔽各种数字设备的硬件和操作系统的通信协议.它是一种数字网络中间件技术, ...

  4. linux php7.2编译安装,Linux下编译安装php7.2

    准备工作 所有操作需要在root用户下 安装路径: /usr/local/php 安装PHP 首先要安装如下依赖包 $ yum install -y gcc gcc-c++  make zlib zl ...

  5. linux 保存编译log,(转)Linux下编译安装log4cxx

    一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...

  6. linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置

    一.linux下编译make文件报错"/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/415 ...

  7. 一份简单的在 Linux下编译及调试 C 代码的指南

    摘要: 一份简单的在 Linux下编译及调试 C 代码的指南 对于Linux下的C程序员来说,几乎天天都会和Linux打交道.但在很多人的眼中,Linux是一个易用性极差.靠命令驱动的操作系统,根本无 ...

  8. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  9. linux emule 编译 wx-config --libs,linux下编译wxwidgets所写程序所遇到的问题

    记录linux下编译wxwidgets所遇到的问题 1./home/hrd/baohualib/wxWidgets-3.0.2/include/wx/platform.h:184:22: 致命错误: ...

最新文章

  1. 一文告诉你Adam、AdamW、Amsgrad区别和联系 重点
  2. oracle通用分页语句rownum
  3. ROS系统 服务数据的定义与使用
  4. hub,桥,交换机,路由器的区别
  5. oracle 10g 更换ocr,Oracle10g RAC在线更换OCR votedisk
  6. YbtOJ#662-交通运输【线段树合并,树状数组】
  7. Spring Data JPA 从入门到精通~EntityManager介绍
  8. torch tensor去掉1维_浑身是刺的“维c之王”,有人管它叫“菠萝”,有人管它叫“梨”...
  9. AtomicReference 和 volatile 的区别
  10. 佳能9100cdn故障_佳能 打印机故障代码大全
  11. python在windows上创建虚拟环境
  12. B - I Hate It(单点更新)(区间求最大值)
  13. 浅谈大数据如何应用?
  14. QCC3040---如何设置PIO为中断
  15. 什么是AOP(面向切片编程)
  16. 图的遍历 —— 广度优先遍历
  17. One-Way Streets (oneway)
  18. 【MongoDB】01、MongoDB基础
  19. SuperZero gero同步区块进度可视化
  20. 半导体放电管TSS详解

热门文章

  1. 购买域名和虚拟空间对于建站的必要性
  2. RAC+DG搭建过程
  3. 智能机器人运动控制仿真系统
  4. linux 宝塔 卸载mysql_宝塔面板(linux)卸载的一些方法的整理以及卸载之后一些文件的删除...
  5. PyQt5笔记之表格(Table Widget)
  6. SQLite的事务处理
  7. 使用Mybatis时, 在*Mapper.xml中出现大于号小于号的问题及两种解决方案
  8. Canvas绘制任意正多边形
  9. 数据结构与算法分析(第一周)
  10. ui配色方案_开放色彩–针对设计师的UI优化配色方案