[笔记]交叉编译freetype2.10.2

本文详细描述了如何在Ubuntu20.04.1环境下,使用ARM-linux-gnueabihf交叉编译工具链,依次编译并安装zlib、libpng和freetype库的过程,包括配置、编译和安装步骤以及所需的文件路径管理。
摘要由CSDN通过智能技术生成


一、前言

为了能够在lcd显示矢量字体,需要交叉编译freetype库。该过程大致分为3步:

  1. 交叉编译库
  2. 在主机上的交叉编译工具链的目录下,安装头文件,和库文件
  3. 在ARM板子的/lib,/usr/lib安装so文件

二、环境

  1. ubuntu 20.04.1
  2. 交叉编译工具链为arm-linux-gnueabihf-

三、freetype依赖

freetype依赖于libpng,libpng又依赖于zlib,
所以我们应该:先编译安装zlib,再编译安装libpng,最后编译安装freetype。但是,有些工具链里有zlib, 那就不用编译安装zlib.

四、交叉编译步骤

1. 确定头文件、库文件在工具链中的目录

输入命令

echo 'main(){}'| arm-linux-gnueabihf-gcc -E -v -

然后找到这一部分,确定其中一个为头文件目录,我选择第一个:
/usr/local/arm/arm-linux-guneabihf/lib/gcc/arm-linux-gnueabihf/4.9.4/include
在这里插入图片描述
下滑找到下图红色部分,我确定最后一个作为存放库目录:
/usr/local/arm/arm-linux-guneabihf/arm-linux-gnueabihf/libc/usr/lib
在这里插入图片描述

2. 交叉编译zlib库

[daiboo@daiboo]:~/codes/0_linux_project/electronic_book/electronic_book$ ls
02_dot_font  03_freetype  libpng-1.6.37  libpng-1.6.37.tar.xz  zlib-1.2.11.tar.gz
[daiboo@daiboo]:~/codes/0_linux_project/electronic_book/electronic_book$ tar -xf zlib-1.2.11.tar.gz

输入 ./configure --prefix=$PWD/tmp
修改Makefile的内容,主要是把gcc改成arm-linux-gnueabihf-gcc

CC=arm-linux-gnueabihf-gcc

CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
#CFLAGS=-g -DZLIB_DEBUG
#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
#           -Wstrict-prototypes -Wmissing-prototypes

SFLAGS=-O3 -fPIC -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN
LDFLAGS=
TEST_LDFLAGS=-L. libz.a
LDSHARED=arm-linux-gnueabihf-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=arm-linux-gnueabihf-gcc -E

STATICLIB=libz.a
SHAREDLIB=libz.so
SHAREDLIBV=libz.so.1.2.11
SHAREDLIBM=libz.so.1
LIBS=$(STATICLIB) $(SHAREDLIBV)

AR=ar
ARFLAGS=rc
RANLIB=ranlib
LDCONFIG=ldconfig
LDSHAREDLIBC=-lc
TAR=tar
SHELL=/bin/sh
EXE=

prefix =/home/daiboo/codes/0_linux_project/electronic_book/electronic_book/zlib-1.2.11/tmp
exec_prefix =${prefix}
libdir =${exec_prefix}/lib
sharedlibdir =${libdir}
includedir =${prefix}/include
mandir =${prefix}/share/man
man3dir = ${mandir}/man3
pkgconfigdir = ${libdir}/pkgconfig
SRCDIR=
ZINC=
ZINCOUT=-I.

然后执行make
接着执行make install
执行了之后就会生成tmp文件
我们需要把tmp文件下的include,lib文件下的内容移动到前面步骤1中确定的头文件、库文件目录
参考执行命令如下:

sudo cp tmp/include/* /usr/local/arm/arm-linux-guneabihf/lib/gcc/arm-linux-gnueabihf/4.9.4/include -rf
sudo cp -rfd tmp/lib/* /usr/local/arm/arm-linux-guneabihf/arm-linux-gnueabihf/libc/usr/lib

至此,在交叉编译工具链中安装了zlib库

3 .交叉编译、安装libpng

freetype依赖于libpng,所以需要先编译、安装libpng。命令如下:

[daiboo@daiboo]:~/codes/0_linux_project/electronic_book/electronic_book$ ls
02_dot_font  03_freetype  libpng-1.6.37  libpng-1.6.37.tar.xz  zlib-1.2.11.tar.gz
[daiboo@daiboo]:~/codes/0_linux_project/electronic_book/electronic_book$ tar xJf libpng-1.6.37.tar.xz
[daiboo@daiboo]:~/codes/0_linux_project/electronic_book/electronic_book$ ls
02_dot_font  03_freetype  libpng-1.6.37  libpng-1.6.37.tar.xz
[daiboo@daiboo]:~/codes/0_linux_project/electronic_book/electronic_book$ cd libpng-1.6.37/

然后输入以下参考命令

./configure --host=arm-linux-gnueabihf --prefix=$PWD/tmp
make
make install
sudo cp tmp/include/* /usr/local/arm/arm-linux-guneabihf/lib/gcc/arm-linux-gnueabihf/4.9.4/include -rf
sudo cp -rfd tmp/lib/* /usr/local/arm/arm-linux-guneabihf/arm-linux-gnueabihf/libc/usr/lib

4.交叉编译、安装freetype

tar xf freetype-2.10.2.tar.xz
mv freetype-2.10.2 freetype-2.10.2_arm  // 这里改了下名字
cd freetype-2.10.2_arm
./configure --host=arm-linux-gnueabihf --prefix=$PWD/tmp
make
make install
sudo cp tmp/include/* /usr/local/arm/arm-linux-guneabihf/lib/gcc/arm-linux-gnueabihf/4.9.4/include -rf
sudo cp -rfd tmp/lib/* /usr/local/arm/arm-linux-guneabihf/arm-linux-gnueabihf/libc/usr/lib

至此交叉编译freetype完成


  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Freetype是一个开源的字体引擎库,它提供了统一的接口来访问多种字体格式文件,从而实现矢量字体的显示。在进行freetype交叉编译时,需要将库文件放到目标板子上的/lib或/usr/lib目录下,程序在板子上运行时会调用这些库文件。此外,还需要移植这个字体引擎并调用对应的API接口,提供字体文件,以实现矢量字体的显示功能。关于更详细的交叉编译freetype的步骤和方法,可以参考freetype的官方网站(https://www.freetype.org/)获取相关的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [freetype交叉编译及在嵌入式linux上的简单使用及改变字体背景和颜色](https://blog.csdn.net/qq8864/article/details/111058174)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [如何交叉编译程序:以freetype为例](https://blog.csdn.net/weixin_45003868/article/details/130201791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值