移植Zlib,Libpng,FreeType详细步骤

简介: 移植Zlib,Libpng,FreeType详细步骤

文章目录


zlib 移植

zlib 其实是一套包含了数据压缩算法的函式库,此函数库为自由软件, 是一套免费、开源的 C 语言函数库,所以我们可以获取到它源代码。libpng 依赖于 zlib 库, 所以要想移植 libpng 先得移植 zlib 库才可以, zlib 也好、 libpng 也好,其实移植过程非常简单,无非就是下载源码、编译源码这样的一些工作,那本小节就向大家介绍如何移植 zlib

1.下载源码包

我们可以进入到 https://www.zlib.net/fossils/这个链接地址下载 zlib 源码包:

2.编译源码

创建目录zlib,将获取到的源码放到该目录,并创建install目录来存放编译生成的文件。

将下载的 zlib-1.2.10.tar.gz 压缩文件拷贝到 Ubuntu 系统的用户家目录下,然后将其解压开:

tar -xzf zlib-1.2.10.tar.gz

解压之后就会得到 zlib-1.2.10 文件夹,这就是 zlib 的源代码目录。

接着我们进入到 zlib 的源码目录 zlib-1.2.10,如下所示:

同样也是执行三部曲:配置、编译、安装,一套流程下来就 OK 了!

在此之前,先对交叉编译工具的环境进行初始化,使用 source 执行交叉编译工具安装目录下的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

执行下面这条命令对 zlib 工程进行配置:

./configure --prefix=/home/alientek/tools/zlib/install/

–prefix 选项指定 zlib 库的安装目录,将家目录下的 tools/zlib/install/作为 zlib库的安装目录。

配置完成之后,直接 make 编译:

make

编译完成之后,接着执行 make install 安装即可!

make install

3.安装目录下的文件夹介绍

进入到 zlib 库的安装目录:

头文件目录 include 以及库文件目录 lib。

至此, zlib 库就已经编译好了,接下来我们需要把编译得到的库文件拷贝到开发板。

4.移植到开发板

进入到 zlib 安装目录下,将 lib 目录下的所有动态链接库文件拷贝到开发板 Linux 系统/usr/lib 目录;注意在拷贝之前,需要先将出厂系统中原有的 zlib 库文件删除, 在开发板 Linux 系统下执行命令:

rm -rf /usr/lib/libz.* /lib/libz.*

删除之后,再将我们编译得到的 zlib 库文件拷贝到开发板/usr/lib 目录, 拷贝库文件时,需要注意符号链接的问题,不能破坏原有的符号链接。

拷贝过去之后,开发板/usr/lib 目录下就应该存在这些库文件,如下所示:

libpng 移植

移植好 zlib 库之后,接着我们开始移植 libpng。

1.下载源码包

首先下载 libpng 源码包,进入https://github.com/glennrp/libpng/ 链接地址,如下:

http://ftp-osl.osuosl.org/pub/libpng/src/libpng16/

2.编译源码

将下载的 libpng-1.6.35.tar.gz 压缩包文件拷贝到 Ubuntu 家目录下,接着将其解压:

tar -xzf libpng-1.6.35.tar.gz

解压之后得到 libpng-1.6.35 文件夹,这便是 libpng 的源码目录。

在编译 libpng 之前,先在 libpng 目录下创建一个名为 install 的文件夹,作为 libpng 库的安装目录:

接着我们进入到 libpng 源码目录下,同样也是执行三部曲:配置、编译、安装,一套流程下来就 OK 了!

在此之前,先对交叉编译工具的环境进行初始化,使用 source 执行交叉编译工具安装目录下的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

libpng 依赖于 zlib 库,前面我们已经将 zlib 库编译成功了,但是我们得告知编译器 zlib 库的安装目录,这样编译器才能找到 zlib 的库文件以及头文件,编译 libpng 的时才不会报错。

执行下面这三条命令,将 zlib 库安装目录下的 include 和 lib 路径导出到环境变量:

export LDFLAGS="${LDFLAGS} -L/usr/local/lib"
export CFLAGS="${CFLAGS} -I/usr/local/include"
export CPPFLAGS="${CPPFLAGS} -I/usr/local/include"

接着执行下面这条命令对 libpng 源码工程进行配置:

./configure --prefix=/home/alientek/tools/libpng/install/ --host=arm-poky-linux-gnueabi

–prefix 选项指定 libpng 的安装目录,将家目录下的 tools/libpng/install作为 libpng 的安装目录。

接着执行 make 进行编译:

make

最后执行 make install 安装即可!

make install

3.安装目录下的文件夹介绍

进入到 libpng 安装目录

同样包含了 bin、 include、 lib 这些目录。

4.移植到开发板

进入到 libpng 安装目录,将 bin 目录下的所有测试工具拷贝到开发板 Linux 系统/usr/bin 目录;将 lib 目录下的所有库文件拷贝到 Linux 系统/usr/lib 目录,注意在拷贝之前,先将开发板出厂系统中已经移植好的libpng 库文件删除,执行下面这条命令:

rm -rf /lib/libpng* /usr/lib/libpng*

删除之后,再将编译得到的 libpng 库文件拷贝到开发板/usr/lib 目录,拷贝库文件时,需要注意符号链接的问题,不能破坏原有的符号链接。

拷贝过去之后,开发板/usr/lib 目录下就应该存在这些库文件,如下所示:

freetype 移植

1.下载 FreeType 源码

开发板出厂系统中, FreeType 的版本为 2.6,这个版本稍微有点低,我们选择移植 2.8 版本的 FreeType。进入到 https://download.savannah.gnu.org/releases/freetype/链接地址,如下所示:

2. 交叉编译 FreeType 源码

将下载好的 freetype-2.8.tar.gz 压缩文件拷贝到 Ubuntu 系统的用户家目录下

执行命令将 freetype-2.8.tar.gz 解压开来:

tar -xzf freetype-2.8.tar.gz

解压成功之后便会得到 FreeType 的源码目录 freetype-2.8。

进入到 freetype-2.8 目录,老规矩,同样是三部曲:配置、编译、安装。首先对交叉编译工具的环境进行初始化,前面章节内容已经提过很多次了,使用交叉编译器之前,必须要对其环境进行初始化(如果当前终端已经初始化过了,则无需再次进行初始化)。

FreeType 库基于模块化设计,意味着我们可以对其进行裁剪,将不需要的功能模块从配置中移除,减小库文件的体积;除此之外, FreeType 还支持很多配置选项, 如果大家想要对 FreeType 做一些自定义配置或者对其进行裁剪,可以参考 FreeType 源码目录下 docs/CUSTOMIZE 文档,该文件对此有比较详细的说明,建议大家看一看,如果有需求的话。 docs 目录下还有其它很多的说明文档, 也都可以读一读。

这里我们简单地配置一下,打开 include/freetype/config/ftoption.h 文件,如下所示:

vi include/freetype/config/ftoption.h

该文件定义了很多的配置宏,我们可以选择使能或禁用这些配置选项,具体配置哪些功能,大家自己去研究,每一个配置宏都有详细地解释说明。 这里我们打开以下两个配置宏:

#define FT_CONFIG_OPTION_SYSTEM_ZLIB
#define FT_CONFIG_OPTION_USE_PNG

找到这两个宏,默认情况下,这两个都被注释掉了,所以是没有使能的; 把这两个宏的注释去掉,使能这两个配置宏。

第一个配置宏表示使用系统安装的 zlib 库,因为 FreeType 支持 Gzip 压缩文件,会使用到 zlib 库, zlib之前我们移植好了;第二个配置宏表示支持 PNG bitmap 位图,因为 FreeType 可以加载 PNG 格式的彩色位图字形,需要依赖于 libpng 库,这个库前面我们也是移植好了。

配置好之后,保存、退出 ftoption.h 文件,接着执行如下命令对 FreeType 工程源码进行配置:

./configure --prefix=/home/alientek/tools/freetype/install/ --host=arm-poky-linux-gnueabi --with-zlib=yes --with-bzip2=no --with-png=yes --with-harfbuzz=no ZLIB_CFLAGS="-I/usr/local/include -L/usr/local/lib" LIBPNG_LIBS=-lpng

配置完成之后接着执行 make 编译,编译完成之后执行 make install 安装即可!

3.安装目录下的文件

进入到 FreeType 安装目录下,如下所示:

同样有 bin 目录、 include 目录以及 lib 目录,大家可以自己进入到这些目录下,浏览下这些目录下的有哪些文件,对此有个印象。

如果要使用 FreeType 库,我们需要在应用程序源码中包含 include/freetype2 目录下的 ft2build.h 头文件,除此之外,还需要包含另一个头文件 FT_FREETYPE_H,这是一个用宏定义的头文件,其实就是include/freetype2/freetype/freetype.h 头文件。

所以,在我们的应用程序一般是这样写:

#include <ft2build.h>
#include FT_FREETYPE_H

4.移植到开发板

接下来将编译得到的动态链接库文件拷贝到开发板 Linux 系统/usr/lib 目录,在拷贝之前,需将/usr/lib 目录下原有的 FreeType 库文件删除掉,执行下面这条命令:

rm -rf /usr/lib/libfreetype.*

删除之后,再将我们编译得到的库文件拷贝到开发板/usr/lib 目录下,也就是 FreeType 安装目录 lib 目录下的所有库文件,拷贝的时候注意符号链接的问题。拷贝完成之后,如下所示:


目录
相关文章
|
6月前
|
Linux
linux 交叉编译libpng,libjpeg库
linux 交叉编译libpng,libjpeg库
112 1
|
6月前
|
Linux 编译器 vr&ar
linux交叉编译一些常用依赖库util-linux,zlib,sqlite3,eudev ,openssl,libpng,glibc
linux交叉编译一些常用依赖库util-linux,zlib,sqlite3,eudev ,openssl,libpng,glibc
289 1
|
Windows
zlib、libzip、 libzippp 库编译(windows + cmake + vs2013)
"libzipp" 这库是基于 "libzip" 之上封装的,而 "libzip" 又是基于 "zlib"库封装的,所以要编译 "libzipp" 库就要先编译其他两个库。下载准备:"zlib-1.2.
3784 0
|
Linux
freetype库的移植
freetype库的移植
352 0
|
Ubuntu 编译器 C语言
zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
|
算法 Linux
17.5 Linux zlib和libpng安装
本节讲解 Linux 在搭建 LAMP 环境过程中对 zlib 和 libpng 源码包的安装。
712 0
17.5 Linux zlib和libpng安装
configure: error: no usable zlib; please install zlib devel package or equivalent m
configure: error: no usable zlib; please install zlib devel package or equivalent m
234 0
|
Windows
开源项目推荐:Zlib,libPng,libJpeg for Windows
开源项目推荐:Zlib,libPng,libJpeg for Windows
1219 0
|
Ubuntu 应用服务中间件 nginx
ubuntu下安装nginx时依赖库zlib,pcre,openssl安装方法
ubuntu下安装nginx时依赖库zlib,pcre,openssl安装方法
3959 0