移植Freetype 到S3C2440

本文详细介绍如何通过交叉编译工具链为ARM平台编译FreeType字体库,并将其正确配置到目标系统中。同时,文章提供了编译示例程序的过程及解决过程中遇到的编码问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 制作交叉编译工具
tar xjf freetype-2.4.10.tar.bz2

./configure --host=arm-linux
make
make DESTDIR=$PWD/tmp install  // ($PWD 代表当前目录) cd /tmp  会生成 usr 目录

/*一般查找安装到那个库的方法*/
(1)echo $PATH 
(2)find -name include  (查头文件)
   find -name stdio.h
(3)find -name lib      (查库文件)

编译出来的头文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

编译出来的库文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib


1.1 拷贝库到ARM的根文件系统
把tmp/usr/local/lib/*  复制到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
cd tmp/usr/local/lib/

sudo cp * /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib -d -rf
cp *so* /work/nfs_root/fs_mini_mdev_new/lib -d  ####拷贝到开发板的lib文件夹

把tmp/usr/local/include/*  复制到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

cd tmp/usr/local/include/
sudo cp * /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include -rf


至此如果编译应用程序,将会出现错误,需执行下面1.2
1.2
cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
sudo mv freetype2/freetype . (因为没有freetype2.h 所以给他移动到当前库位置)


2. 编译应用程序 
2.1 编译example1.c
arm-linux-gcc -finput-charset=GBK -o example1 example1.c  -lfreetype -lm
./example1 ./simsun.ttc 
  
出现错误:因为没有把字体文件拷贝过去
Uniocde: 
0x97e6 0x67 0x69 0x66 
Segmentation fault


3.1 编译dot_font.c
arm-linux-gcc -finput-charset=GBK -o dot_font dot_font.c  -lfreetype -lm

./dot_font ./simsun.ttc


就这样编译时将会出现如下错误信息:
cc1: error: failure to convert GBK to UTF-8

分析步骤:
1. man gcc 

2.搜索 /charset  的应用方法,知道charset可支持任何能被iconv 转换的编码

3.所以搜索 iconv --help  看iconv 的用法

4.可以知道 iconv的 -f 从那种码  -t  输出那种码

5.iconv用法的格式:iconv -f GBK -t UTF-8  xxx(要转换的文件)

6.进制转换,看哪里转换不过去。

iconv -f GBK -t UTF-8 dot_font.c


arm-linux-gcc -finput-charset=GBK -fexec-charset=GBK -o dot_font dot_font.c -lfreetype -lm


# ./dot_font ./simsun.ttc 
chinese code: d6 d0
here1
here2
Segmentation fault

运行到此出现上面的段错误:  slot = face->glyph;

重新下载内核和刷新simsun.ttc 后,运作上面的就可以运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值