白旭的博客欢迎您

既然选择了远方,便只顾风雨兼程!

18.26 freetype2字库移植

在S3C2440A开发板上,交叉编译,步骤:

tar xjf freetype-2.4.10.tar.bz2 

进入解压的目录

vi docs/INSTALL.CROSS/* 查看配置过程 */
./configure --host=arm-linux
make
mkdir tmp/*新建安装文件夹//默认安装在/usr/local/目录下*/
make DESTDIR=$PWD/tmp install

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin

查找编译出来的库文件和头文件放到哪里?

find -name include
find -name stdio.h/* 查找一个简单的头文件 */
头文件放到这里/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
find -name lib
库文件文件放到这里/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

把$tmp/usr/local/lib/*
复制到 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
tmp/usr/local/lib/$ sudo cp * /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib -d -rf

tmp/usr/local/lib/$ cp *so* /work/nfs_root/fs_mini_mdev_new/lib -d
【-d 原来是链接文件,拷贝过去也是链接文件】

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

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

编译出错:

  arm-linux-gcc -o example1 example1.c

ERROR 01:     

【error提示:】
  /usr/local/arm/4.3.2/bin/../arm-none-linux-gnueabi/libc/usr/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory
  通过下列命令查看可知:
  ls /usr/local/include/freetype2/freetype
  ls /usr/local/include/freetype2/freetype/config/ftheader.h
  程序运行时在freetype/config/目录下查找ftheader.h。但是,安装后的ftheader.hfreetype2/freetype/config/

ANSWER 01:   

 

【解决方案1】
  移动freetype2目录下的freetype到上层目录 mv freetype2/freetype .
  编译example1.c
  arm-linux-gcc -finput-charset=GBK -o example1 example1.c -lfreetype -lm
【解决方案2】
  gcc编译时,用-I选项,指定头文件的目录/usr/local/include/freetype2
  -l加库的名字
  -lm:m是数学库的意思
  gcc -o example1 example1.c -I /usr/local/include/freetype2 -lfreetype -lm

ERROR 02:     

  交叉编译.c文件,遇到如下问题:

  $ arm-linux-gcc -o example1 example1.c

  example1.c:108:25: error: converting to execution character set: Invalid or incomplete multibyte or wide character

ANSWER 02:   

  转换为执行字符集:无效的或不完整的宽字节

  编译时,加入  -finput-charset=GBK

  arm-linux-gcc -finput-charset=GBK -o example1 example1.c

  错误原因:在windows下编写的.c文件,保存的文件默认是GBK,而在linux下保存的文件默认是UTF-8格式的。

【开发板测试】
  $ cp example1 /work/nfs_root/fs_mini_mdev_new
  /# ./example1 ./simsun.ttc bx
  同样一个程序,在PC上可以执行,交叉编译之后,在开发板上也可执行。


 

posted on 2019-07-10 10:37  小学生_白旭  阅读(907)  评论(0编辑  收藏  举报

导航