FreeType 支持 Gzip 压缩文件,会使用到 zlib 库。同时FreeType 可以加载 PNG 格式的彩色位
图字形,需要依赖于 libpng 库,因此在移植Freetype字体库前需要先移植zlib库和libpng库。

一、移植zlib库

下载源码

        进入源码官网https://www.zlib.net/fossils/,下载源码

将下载的源码通过命令tar -vxzf xxx进行解压,创建一个目录zlib作为源码的安装目录,如下图所示:

配置zlib源码,首先执行脚本environment-setup-cortexa7hf-neon-poky-linux-gnueabi 文件进行环境变量初始化。

source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

配置完环境变量如下所示:

指定安装路径:./configure --prefix=/home/zyc/tools/zlib/

使用make命令编译zlib源码,编译结束后在使用make install进行安装:

将源码移植到IMX6ULL开发板:

由于scp命令会导致文件的符号链接解除,因此将源码压缩在传过去再解压缩,如下图所示:

随后将库文件拷贝到目录/usr/lib下

二、移植libpng库

        下载源码

进入网址下载 https://github.com/glennrp/libpng/releases,:

解压libpng源码,并创建一个png文件夹用来安装libpng库:

libpng 依赖于 zlib 库,前面我们已经将 zlib 库编译成功了,但是我们得告知编译器 zlib 库的安装目录,这样编译器才能找到 zlib 的库文件以及头文件,编译 libpng 的时才不会报错,执行以下三条命令将 zlib 库安装目录下的 include 和 lib 路径导出到环境变量:

export LDFLAGS="${LDFLAGS} -L/home/zyc/tools/zlib/lib"
export CFLAGS="${CFLAGS} -I/home/zyc/tools/zlib/include"
export CPPFLAGS="${CPPFLAGS} -I/home/zyc/tools/zlib/include"

接着执行以下命令对源码进行配置:

./configure --prefix=/home/zyc/tools/png --host=arm-poky-linux-gnueabi

最后进行编译make和安装make install:

将源码移植到IMX6ULL开发板:

和之前的操作一样将bin目录下的文件拷贝到usr/bin/目录下,lib目录下的文件拷贝到/usr/lib目录下:

三、移植Freetype字体库

下载源码

解压源码并创建一个文件夹freetype用来保存安装文件:

配置文件 

        打开 include/freetype/config/ftoption.h 文件,打开以下两个宏定义:

#define FT_CONFIG_OPTION_SYSTEM_ZLIB
#define FT_CONFIG_OPTION_USE_PNG

对源码进行如下配置:

./configure --prefix=/home/zyc/tools/freetype/ --host=arm-poky-linux-gnueabi --with-
zlib=yes --with-bzip2=no --with-png=yes --with-harfbuzz=no ZLIB_CFLAGS="-
I/home/zyc/tools/zlib/include -L/home/zyc/tools/zlib/lib" ZLIB_LIBS=-lz LIBPNG_CFLAGS="-
I/home/zyc/tools/png/include -L/home/zyc/tools/png/lib" LIBPNG_LIBS=-lpng

--prefix 选项指定 FreeType 库的安装目录; --host 选项设置为交叉编译器名称的前缀
--with-zlib=yes 表示使用 zlib;
--with-bzip2=no 表示不使用 bzip2 库;
--with-png=yes 表示使用 libpng 库;
--with-harfbuzz=no 表示不使用 harfbuzz 库。
ZLIB_CFLAGS 选项用于指定 zlib 的头文件路径和库文件路径,根据实际安装路径填写;
ZLIB_LIBS 选项指定链接的 zlib 库的名称;
LIBPNG_CFLAGS 选项用于指定 libpng 的头文件路径和库文件路径,根据实际安装路径填写;
LIBPNG_LIBS 选项用于指定链接的 libpng 库的名称。

配置完进行编译make和安装make install,如下图所示:

将源码移植到IMX6ULL开发板:

将lib目录下的文件拷贝到开发板的/usr/lib目录下:

20.移植Freetype字体库相关推荐

  1. CVE-2020-15999:Chrome FreeType 字体库堆溢出原理分析

     聚焦源代码安全,网罗国内外最新资讯! 漏洞简介 Google发布公告,旧版本的 chrome 浏览器的 FreeType字体库中存在堆溢出,被利用可能导致 RCE(远程代码执行). 安全专家建议用户 ...

  2. FreeType 字体库使用 (简易的字形装载和实际应用)

    FreeType是一个用C语言实现的字体光栅化引擎制作的一个函式库.它可以用来将字符栅格化并映射成位图以及提供其它字体相关业务的支持.FreeType也是一个跨平台的字体库,下面实例以 Windows ...

  3. CVE-2020-15999:Chrome Freetype字体库堆溢出漏洞通告

    360-CERT [三六零CERT](javascript:void(0)

  4. 基于Qt的FreeType字体轮廓解析

    一.本文目的 以前的文档中.详细的介绍了FreeType开源字体引擎库的基础知识.基本用法.但并未详细的阐明在TurboCG中.是如何解析出一个文字的轮廓的,本文集中阐述.怎么样使用FreeType开 ...

  5. 用freetype开源字体库,实现在图片上字体大小

    掌握truetype字体原理,利用freetype开源字体库,实现在图片上书写一行字体大小变化的诗句(比如首字体增大). 首先,在树莓派上安装freetype: 下载好: 传输文件,并且安装好: 解压 ...

  6. readfile读取串口数据_谈一谈使用字体库加密数据仿58同城

    本文转载于 SegmentFault 社区 作者:Aaron 对于前端同学来说其实做的更多的事情就是把数据整合好,按照UI同学的设计通过后端同学给的数据展示在网页中,这也就导致了很多人认为前端很简单, ...

  7. iOS中如何添加自定义的字体库

    今天在开发过程中,UI设计直接给我了一个字体库文件,让我在label的显示中直接使用自己库的文件,突然之间感觉懵逼状态,这个怎么弄,其实很简单,一句代码就可以搞定这个字体库的. 工程配置步骤: 1.在 ...

  8. 开源方案搭建可离线的精美矢量切片地图服务-6.Mapbox之.pbf字体库

    系列文章目录 开源方案搭建可离线的精美矢量切片地图服务-1.开篇(附成果演示地址) 开源方案搭建可离线的精美矢量切片地图服务-2.PostGIS+GeoServer矢量切片 开源方案搭建可离线的精美矢 ...

  9. FreeType字体引擎介绍

    在图像处理领域,有时候我们需要在图片上进行打印字体的任务.例如,打印一个logo到图片上.在这种情况下,我们需要调用字体库,并将其"雕刻"到图片上,而常用的TrueType,Ope ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task22. 二叉树的中序遍历
  2. ubuntu创建新用户名和密码以及查看删除用户
  3. Elasticsearch 存储模型
  4. ROS探索总结(十)(十一)(十二)——语音控制 机器视觉 坐标系统
  5. 解决SQL注入与XSS攻击
  6. (2)stm32开发之使用Keil MDK以及标准外设库创建STM32工程
  7. CSS Hack 汇总速查一览
  8. lucene简单实例
  9. (转)MyBatis框架的学习(三)——Dao层开发方法
  10. 蒙特卡洛粒子滤波定位算法_基于粒子滤波的TBD算法仿真—MATLAB仿真
  11. 不想听别人的建议,就不要问
  12. coreldraw橙子怎么画_cdr怎么画一杯橙汁?CorelDRAW简单绘制的一杯满满的橙汁教程...
  13. 股权比例的3种黄金分割线
  14. scanf ---------未完待续
  15. html snippets怎么配置,用Snippets创建自己喜欢的注释格式
  16. 谷歌大脑团队任意图像风格化迁移论文详解,模型还可以跑在您本地浏览器里...
  17. Excel导出功能超时解决方案 -- 异步处理
  18. devops工具-Ansible进阶playbookroles
  19. [main] org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
  20. Java 模拟栈结构

热门文章

  1. 浅谈标签传播算法:LPA
  2. 洛谷 P4546 bzoj 5020 在美妙的数学王国中畅游 —— LCT+泰勒展开
  3. 成都web前端培训班
  4. amber分子动力学模拟干货总结
  5. 修改 Tomcat 默认首页
  6. 一文读懂Java 垃圾回收机制
  7. 财路网每日原创推送:科普:智能合约和区块链
  8. 10月14日笔记交叉开发开发板连接,远程登录和tftp服务器配置
  9. Unicode编码的理解
  10. 【2016年第4期】基于仿真大数据的效能评估指标体系构建方法