zoukankan      html  css  js  c++  java
  • 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上可以执行,交叉编译之后,在开发板上也可执行。


  • 相关阅读:
    coursera 《现代操作系统》 -- 第五周 同步机制(2)
    coursera 《现代操作系统》 -- 第五周 同步机制(1)
    coursera 《现代操作系统》 -- 第四周 处理器调度
    coursera 《现代操作系统》
    路由器WAN端与LAN端的区别
    如何查看与刷新DNS本地缓存
    国内外常用的DNS服务器
    PPPOE协议
    WDS 的两种实现方式
    wifi基础知识整理
  • 原文地址:https://www.cnblogs.com/baixu/p/11162314.html
Copyright © 2011-2022 走看看