MiniGUI 3.0.12在主机上的配置及在开发板上的移植

MiniGUI 3.0.12在主机上的配置及在开发板上的移植

转载地址:https://blog.csdn.net/only0903030111/article/details/7826599

4.1 MiniGUI 3.0 在 Linux PC 开发系统上的安装和运行

假定您第一次安装 MiniGUI ,本章将引导您在 Linux 操作系统上以默认方式快速安装并运行 MiniGUI,其中第三方组件和库文件的安装方法是以Ubuntu 8.04 发行版为例的。

4.1.1 安装 MiniGUI 开发包

MiniGUI 提供了最简便的安装方法,只需要挂载光盘并运行光盘中根目录下的 install.sh 脚本即可。您可以通过下边的命令查看 install.sh 的帮助信息。

user$ ./install.sh --help

由帮助信息可得到安装时需要以下参数:

  • –adp_inst_dir :指定库的安装路径,默认安装路径为 /usr/local/ 目录
  • –src_inst_dir :指定组件及其依赖库代码解压路径,默认解压路径为主目录,比如使用的用户名为test,那么解压路径为 /home/test/ 目录
  • –minigui_runmode :指定您要安装的 MiniGUI 运行模式,默认的 MiniGUI 运行模式是进程版(标准版和评估版中只有线程模式,因此无需此安装选项)

以下是安装 MiniGUI 进程版本到默认路径 /usr/local 目录下,并且将组件及其依赖库等源代码解压到 /home/test/3.0.2 路径下的示例。

user$ sudo ./install.sh --adp_inst_dir=/usr/local --src_inst_dir=/home/test/3.0.2 \
                      --minigui_runmode=procs

4.1.2 安装 MiniGUI 资源包

安装资源包的步骤如下:

  • 进入 MiniGUI 的资源路径,在3.1.1中我们已将 MiniGUI 资源包安装至 /home/test/3.0.2/minigui-res-3.0.2 目录下。

user$ cd /home/test/3.0.2/minigui-res-3.0.2

  • 安装 MiniGUI 资源,默认的安装路径是 /usr/local ,也可以通过参数 –prefix 来指定安装路径。下边是将资源安装到默认路径 /usr/local 下的示例,供参考。

user$ ./configure --prefix=/usr/local; make
user$ sudo make install

4.1.3 编译和安装依赖库

在运行 MiniGUI 之前,需要安装 MiniGUI 所需的依赖库。除了在使用 SVGALib 时需要第三方函数库的支持外,MiniGUI 还使用了 LibFreeType、LibPNG、LibJPEG、LibZ 第三方的依赖库。这些依赖库都是使用 GNU Automake/Autoconf 脚本组织工程,通过在运行 ./configure 命令时指定特定的环境变量及某些选项来完成这些库的编译和安装。我们可以通过在这些依赖库源码目录下运行 ./configure –help 命令,来查看各自 configure 脚本可以接受的开关参数。本节给出了各依赖库在 Linux PC 上的安装步骤,仅供参考。

LibFreeType

FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType,OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想(下文中将会介绍到)。因此,FreeType的用户可以灵活地对它进行裁剪。这个函数库提供对FreeType 字体的支持。如果MiniGUI 提供对FreeType 字体的支持,则需要安装这个函数库。常见的 Linux 发行版均默认安装了 FreeType 库。

下面将举例说明 Linux 发行版中没有安装 FreeType 库时应该如何安装 FreeType 库。

首先进入 FreeType 库源代码目录。之后运行如下命令:

user$ ./configure --prefix=/usr/local; make
user$ sudo make install
这样 FreeType 库就会被安装到 /usr/local 目录下。

LibJPEG,LibPNG ,LibZ等依赖库

运行 MiniGUI 所依赖的函数库还包括用来支持 JPEG 图片的 libjpeg、用来支持 PNG 图片的 libpng 等等。和 FreeType 库一样,常见的 Linux 发行版中均已包含这些函数库。

下面将举例说明 Linux 发行版中没有安装这些依赖库,应该如何安装。

  • PNG 库的安装,首先进入 PNG 库的源代码目录,安装具体步骤如下:
user$ ./configure --prefix=/usr/local; make
user$ sudo make install
这样 PNG 库就会被安装到 /usr/local 目录下。

  • JPEG 库的安装,首先进入 JPEG 库的源代码目录,安装的具体步骤如下:
user$ ./configure --prefix=/usr/local --enable-shared; make
user$ sudo make install
安装过程中可能会提示说不能创建某些文件,这时需要查看你要安装的路径下有没有对应的目录,如果没有需要自己创建。这样 JPEG 的动态库和静态库就会被安装到 /usr/local 目录下。

  • Z 库的安装,首先进入 Z 库的源代码目录,安装的具体步骤如下:
user$ ./configure --prefix=/usr/local; make
user$ sudo make install
这样 Z 库就会被安装到 /usr/local 目录下。

4.1.4 虚拟帧缓冲区工具的准备

有 XWindow 的PC环境下,编译和安装 qvfb2 程序

目前 PC Linux 版本的 MiniGUI 3.0 默认的虚拟帪缓冲区工具是 pc_xvfb,qvfb2 是 pc_xvfb 引擎所对应的虚拟帧缓冲区程序在 PC Linux 上的一种实现方式。

编译安装qvfb2,需要先安装Qt,并且Qt版本需要大于等于3.0.3。具体的安装过程可以参考源代码中的 README 文件。下边举例说明一下 qvfb 在 ubuntu 环境下安装的具体过程。

  • 先确保 gcc组件、X 库已经安装,如果没有需要先安装,安装步骤如下:
user$ sudo apt-get install build-essential xorg-dev
  • Qt3 的库及其头文件等相关内容的安装:
user$ sudo apt-get install libqt3-headers libqt3-mt libqt3-mt-dev
  • qvfb2 的安装(进入 qvfb2 的源码目录,运行如下命令):
user$ ./configure --prefix=/usr/local --with-qt-includes=/usr/include/qt3/ \
                        --with-qt-libraries=/usr/lib/qt3/;make
user$ sudo make install
  • –prefix 选项是指定 qvfb2 的安装路径,此事例中的路径 /usr/local 也是 qvfb2 的默认安装路径,跟 MiniGUI 的运行时配置文件 MiniGUI.cfg 文件中 pc_xvfb 项的指定路径相同。
  • –with-qt-includes 选项是指定 Qt3 的头文件路径。
  • –with-qt-libraries 选项指定了 Qt3 的库文件路径。

在命令行模式下,配置framebuffer设备

在没有 XWindow 环境下,我们可以利用 framebuffer 设备,来运行我们的 MiniGUI 程序,下边将以 ubuntu 8.04为例介绍如何配置framebuffer设备。
配置framebuffer设备:
1、
user$ sudo vi /etc/initramfs-tools/modules
加入如下三行内容
fbcon
vesafb
vga16fb

2、

user$ sudo vi /etc/modprobe.d/blacklist-framebuffer
把文件/etc/modprobe.d/blacklist-framebuffer里面的vesafb和vga16fb这两行给注释掉。

3、

user$ sudo gedit /boot/grub/menu.lst
在启动项的最后面加上 vga=0x317(视显示器和位数而定,此为1024*768*16bit)

各种色深和位数的配置号如下:( 注意:有些机器的配置不合此例,此时请运行”hwinfo –framebuffer”命令来查看具体的数值)

色深 640x480 800x600 1024x768 1280x1024
8位色 0x301 0x303 0x305 0x307
15位色 0x310 0x313 0x316 0x319
16位色 0x311 0x314 0x317 0x31A
24位色 0x312 0x315 0x318 0x31B

4、重启机器,之后查看 /dev/fb0 设备是否已经存在,如果存在,则说明目前 framebuffer 设备可以使用了。

MiniGUI 相关配置的调整
需要修改/usr/local/etc下的MiniGUI.cfg文件
user$ sudo vi /usr/local/etc/MiniGUI.cfg
修改输出引擎为fbcon,即将gal_engine=pc_xvfb改为gal_engine=fbcon。

修改输入引擎为console(此处以console为例),即将ial_engine=pc_xvfb改为ial_engine=console。

4.1.5 编译并运行示例程序

【提示】MiniGUI 演示程序默认在 pc_xvfb 引擎运行。在 PC Linux 上需要安装 qvfb2。

编译运行示例程序的具体步骤如下:

  • 此文档中 MiniGUI 演示程序的代码被放到了 /home/test/3.0.2/mg-samples-3.0.2 目录下。

user$ cd /home/test/3.0.2/mg-samples-3.0.2

  • 无论是在 MiniGUI 进程模式还是在 MiniGUI 线程模式下,编译过程都是一样的编译,如下:
user$ ./configure
user$ make

  • 多进程模式下运行演示程序,需要先后台启动 mginit 程序。如下是在多进程模式下运行 same 游戏的过程:
user$ cd mginit
user$ ./mginit &
user$ cd ../same
user$ ./same

  • 多线程模式下运行演示程序,相对简单,直接运行示例程序即可。如下是在多线程模式下运行 same 游戏的过程:

user$ cd same
user$ ./same

4.2 MiniGUI 3.0 在 Windows PC 开发系统上的安装和运行

4.3 MiniGUI 3.0 在目标系统上的安装和运行

4.3.1 嵌入式 Linux/uClinux

安装 MiniGUI 开发包

下边只是做一个简单的安装说明:将 MiniGUI 3.0 相关的头文件及其库文件拷贝到开发板上的某个目录下,此文档以 /home/minigui 目录为例。之后指定库路径,具体命令如下:

user$ export LD_LIBRARY_PATH=/home/minigui/lib:$LD_LIBRARY_PATH
将根据开发板实际情况修改好的 MiniGUI 运行时配置文件拷贝到适当的位置(MiniGUI.cfg 文件存放位置的说明请参见 第五章的第二节内容 )。

安装 MiniGUI 资源包

资源包不需要交叉编译,直接在 Linux PC 机上默认安装资源包。之后将安装在 /usr/local/share/minigui/res 目录下的资源包拷贝到开发板的 /home/minigui 目录下。需要注意MiniGUI 的运行时配置文件MiniGUI.cfg 文件中指定的资源路径要与MiniGUI 资源在开发板上的放置路径一致 。

依赖库的交叉编译

目前 MiniGUI 3.0 的依赖库都是使用 Automake/Autoconf 脚本组织的工程,通过在运行 ./configure 命令时指定特定的环境变量及其某些选项来完成交叉编译。下边将逐一介绍依赖库的交叉编译过程。

交叉编译 LibFreeType

FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType,OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想(下文中将会介绍到)。因此,FreeType的用户可以灵活地对它进行裁剪。

该函数库使用标准 GNU Automake/Autoconf 脚本组织,且通过 configure 命令提供了若干对 libfreetype 进行定制和配置的选项。

首先,可以通过命令 ./configure –help 命令,查看 configure 选项的一些帮助信息。了解 JPEG 库支持的 configure 选项后,之后可以整理出交叉编译配置命令行,进入到 jpeg 源码包目录下进行交叉编译。假定针对 hi3511 目标进行交叉编译,交叉编译配置命令行可以如下:

user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR=arm-hismall-linux-ar \
          LDFLAGS="-L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/hi3511/3511 \
            --build=i386-linux \
            --host=arm-linux \
            --target=arm-linux 
运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成objs/.libs目录,且在该目录下生成 FreeType 的动态库和静态库。此时运行 make install 命令,将会把头文件及其库文件安装到 configure 脚本 –prefix 选项指定的目录下,此处是安装到 /opt/hi3511/3511 目录下。即头文件被安装到 /opt/hi3511/3511/include 目录下,库文件被安装到 /opt/hi3511/3511/lib 目录下。

交叉编译 LibJPEG,LibPNG ,LibZ等依赖库

交叉编译 JPEG 函数库

MiniGUI 3.0 提供的 jpegsrc.v6b.tar.gz 源代码包,这个软件包提供了对 JPEG 格式图片进行编码或解码的接口。该函数库使用标准 GNU Automake/Autoconf 脚本组织,且通过 configure 命令提供了若干对 libjpeg 进行定制和配置的选项。

首先,可以通过命令 ./configure –help 命令,查看 configure 选项的一些帮助信息。了解 JPEG 库支持的 configure 选项后,之后可以整理出交叉编译配置命令行,进入到 jpeg 源码包目录下进行交叉编译。假定针对 hi3511 目标进行交叉编译,那么最终的交叉编译配置命令行可以如下:

user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR=arm-hismall-linux-ar \
          LDFLAGS="-L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/hi3511/3511 \
            --build=i386-linux \
            --host=arm-linux \
            --target=arm-linux \
            --enable-shared
运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成 .libs 目录,在该目录下生成 JPEG 的动态库和静态库,同时还会生成一些测试程序,如 cjpeg djpeg 等。如果运行 make install 命令,将会把头文件及其库文件安装到 configure 脚本 –prefix 选项指定的目录下,此处是安装到 /opt/hi3511/3511 目录下。(安装过程中可能会提示说不能创建某些文件,这时需要查看你要安装的路径下有没有对应的目录,如果没有需要自己创建。)

我们在上面的交叉编译配置命令行中,通过设置 CC、AR、CFLAGS 等环境变量,将交叉编译使用的参数传递给了最终的 makefile 文件,而通过 configure 命令的参数,如 –prefix、–build、–host 等选项,设置了安装路径前缀、宿主机系统、目标机系统等。

交叉编译 PNG 函数库

MiniGUI 3.0 提供的 libpng-1.2.30.tar.gz 源代码包,这个软件包提供了对 PNG 格式图片进行编码或解码的接口。该函数库使用标准 GNU Automake/Autoconf 脚本组织,且通过 configure 命令提供了若干对 libpng 进行定制和配置的选项。

首先,可以通过命令 ./configure –help 命令,查看 configure 选项的一些帮助信息。了解 PNG 库支持的 configure 选项后,之后可以整理出交叉编译配置命令行,进入到 png 源码包目录下进行交叉编译。假定针对 hi3511 目标进行交叉编译,交叉编译配置命令行可以如下:

user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR=arm-hismall-linux-ar \
          LDFLAGS="-L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/hi3511/3511 \
            --build=i386-linux \
            --host=arm-linux \
            --target=arm-linux 
运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成 .libs 目录,且在该目录下生成 PNG 的动态库(该选项默认是打开的,所以不需要加入 –enable-shared选项)和静态库。此时运行 make install 命令,将会把头文件及其库文件安装到 configure 脚本 –prefix 选项指定的目录下,此处是安装到 /opt/hi3511/3511 目录下。即头文件被安装到 /opt/hi3511/3511/include 目录下,库文件被安装到 /opt/hi3511/3511/lib 目录下。

交叉编译 Z 函数库

MiniGUI 3.0 提供的 zlib-1.2.3.tar.gz 源代码包,这个软件包提供UNIX 系统中标准的 Z 压缩/解压缩算法。该函数库使用标准 GNU Automake/Autoconf 脚本组织,且通过 configure 命令提供了若干对 libz 进行定制和配置的选项,可生成 zlib 的动态库和静态库。

首先,可以通过命令 ./configure –help 命令,查看 configure 选项的一些帮助信息。了解 PNG 库支持的 configure 选项后,之后可以整理出交叉编译配置命令行,进入到 zlib 源码包目录下进行交叉编译。假定针对 hi3511 目标进行交叉编译,交叉编译配置命令行可以如下:

user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR='arm-hismall-linux-ar rc' \
          LDFLAGS="-L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/hi3511/3511 \
            --shared
运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成 zlib 的动态库和静态库。此时运行 make install 命令,将会把头文件及其库文件安装到 configure 脚本 –prefix 选项指定的目录下,此处是安装到 /opt/hi3511/3511 目录下。即头文件被安装到 /opt/hi3511/3511/include 目录下,库文件被安装到 /opt/hi3511/3511/lib 目录下。

交叉编译编译并运行示例程序

  • 示例程序的交叉编译
交叉编译示例程序,进入到示例程序源代码目录。假定针对 hi3511 目标进行交叉编译,交叉编译配置命令行可以如下:
user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR='arm-hismall-linux-ar rc' \
          LDFLAGS="-L/opt/hi3511/3511/lib -L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/3511/include -I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          CPPFLAGS="-g -I/opt/hi3511/3511/include -I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          CXXFLAGS="-g -I/opt/hi3511/3511/include -I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/houhi3511/3511 \
               --build=i386-linux \
               --host=arm-linux \
               --target=arm-linux 

运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成相应的可执行程序。

【说明】

/opt/hi3511/3511/ 这个路径是 MiniGUI 及其依赖库交叉编译后的库和头文件路径。

/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr 这个路径是交叉工具链的一些库和头文件路径。

  • 示例程序的运行

因为 MiniGUI 的安装和 MiniGUI 资源的安装已经完成,只需要拷贝交叉编译后示例程序的可执行文件及其需要的资源文件到开发板上,直接运行即可。以 mg-samples-3.0.2 示例中 src 目录下的可执行程序为例。只需将 mg-samples-3.0.2/src 目录下的可执行程序和 res 目录拷贝到目标板的相应位置(此文档中是将这些文件拷贝到开发板的 /home/minigui/bin 目录下)。

    • 多进程模式下运行演示程序,需要先后台启动 mginit 程序。如下是在多进程模式下运行 button 程序的过程:
user$ ./mginit &
user$ ./button
    • 多线程模式下运行演示程序,相对简单,直接运行示例程序即可。如下是在多线程模式下运行 button 程序的过程:
user$ ./button

            </div>

4.1 MiniGUI 3.0 在 Linux PC 开发系统上的安装和运行

假定您第一次安装 MiniGUI ,本章将引导您在 Linux 操作系统上以默认方式快速安装并运行 MiniGUI,其中第三方组件和库文件的安装方法是以Ubuntu 8.04 发行版为例的。

4.1.1 安装 MiniGUI 开发包

MiniGUI 提供了最简便的安装方法,只需要挂载光盘并运行光盘中根目录下的 install.sh 脚本即可。您可以通过下边的命令查看 install.sh 的帮助信息。

user$ ./install.sh --help

由帮助信息可得到安装时需要以下参数:

  • –adp_inst_dir :指定库的安装路径,默认安装路径为 /usr/local/ 目录
  • –src_inst_dir :指定组件及其依赖库代码解压路径,默认解压路径为主目录,比如使用的用户名为test,那么解压路径为 /home/test/ 目录
  • –minigui_runmode :指定您要安装的 MiniGUI 运行模式,默认的 MiniGUI 运行模式是进程版(标准版和评估版中只有线程模式,因此无需此安装选项)

以下是安装 MiniGUI 进程版本到默认路径 /usr/local 目录下,并且将组件及其依赖库等源代码解压到 /home/test/3.0.2 路径下的示例。

user$ sudo ./install.sh --adp_inst_dir=/usr/local --src_inst_dir=/home/test/3.0.2 \
                      --minigui_runmode=procs

4.1.2 安装 MiniGUI 资源包

安装资源包的步骤如下:

  • 进入 MiniGUI 的资源路径,在3.1.1中我们已将 MiniGUI 资源包安装至 /home/test/3.0.2/minigui-res-3.0.2 目录下。

user$ cd /home/test/3.0.2/minigui-res-3.0.2

  • 安装 MiniGUI 资源,默认的安装路径是 /usr/local ,也可以通过参数 –prefix 来指定安装路径。下边是将资源安装到默认路径 /usr/local 下的示例,供参考。

user$ ./configure --prefix=/usr/local; make
user$ sudo make install

4.1.3 编译和安装依赖库

在运行 MiniGUI 之前,需要安装 MiniGUI 所需的依赖库。除了在使用 SVGALib 时需要第三方函数库的支持外,MiniGUI 还使用了 LibFreeType、LibPNG、LibJPEG、LibZ 第三方的依赖库。这些依赖库都是使用 GNU Automake/Autoconf 脚本组织工程,通过在运行 ./configure 命令时指定特定的环境变量及某些选项来完成这些库的编译和安装。我们可以通过在这些依赖库源码目录下运行 ./configure –help 命令,来查看各自 configure 脚本可以接受的开关参数。本节给出了各依赖库在 Linux PC 上的安装步骤,仅供参考。

LibFreeType

FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType,OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想(下文中将会介绍到)。因此,FreeType的用户可以灵活地对它进行裁剪。这个函数库提供对FreeType 字体的支持。如果MiniGUI 提供对FreeType 字体的支持,则需要安装这个函数库。常见的 Linux 发行版均默认安装了 FreeType 库。

下面将举例说明 Linux 发行版中没有安装 FreeType 库时应该如何安装 FreeType 库。

首先进入 FreeType 库源代码目录。之后运行如下命令:

user$ ./configure --prefix=/usr/local; make
user$ sudo make install
这样 FreeType 库就会被安装到 /usr/local 目录下。

LibJPEG,LibPNG ,LibZ等依赖库

运行 MiniGUI 所依赖的函数库还包括用来支持 JPEG 图片的 libjpeg、用来支持 PNG 图片的 libpng 等等。和 FreeType 库一样,常见的 Linux 发行版中均已包含这些函数库。

下面将举例说明 Linux 发行版中没有安装这些依赖库,应该如何安装。

  • PNG 库的安装,首先进入 PNG 库的源代码目录,安装具体步骤如下:
user$ ./configure --prefix=/usr/local; make
user$ sudo make install
这样 PNG 库就会被安装到 /usr/local 目录下。

  • JPEG 库的安装,首先进入 JPEG 库的源代码目录,安装的具体步骤如下:
user$ ./configure --prefix=/usr/local --enable-shared; make
user$ sudo make install
安装过程中可能会提示说不能创建某些文件,这时需要查看你要安装的路径下有没有对应的目录,如果没有需要自己创建。这样 JPEG 的动态库和静态库就会被安装到 /usr/local 目录下。

  • Z 库的安装,首先进入 Z 库的源代码目录,安装的具体步骤如下:
user$ ./configure --prefix=/usr/local; make
user$ sudo make install
这样 Z 库就会被安装到 /usr/local 目录下。

4.1.4 虚拟帧缓冲区工具的准备

有 XWindow 的PC环境下,编译和安装 qvfb2 程序

目前 PC Linux 版本的 MiniGUI 3.0 默认的虚拟帪缓冲区工具是 pc_xvfb,qvfb2 是 pc_xvfb 引擎所对应的虚拟帧缓冲区程序在 PC Linux 上的一种实现方式。

编译安装qvfb2,需要先安装Qt,并且Qt版本需要大于等于3.0.3。具体的安装过程可以参考源代码中的 README 文件。下边举例说明一下 qvfb 在 ubuntu 环境下安装的具体过程。

  • 先确保 gcc组件、X 库已经安装,如果没有需要先安装,安装步骤如下:
user$ sudo apt-get install build-essential xorg-dev
  • Qt3 的库及其头文件等相关内容的安装:
user$ sudo apt-get install libqt3-headers libqt3-mt libqt3-mt-dev
  • qvfb2 的安装(进入 qvfb2 的源码目录,运行如下命令):
user$ ./configure --prefix=/usr/local --with-qt-includes=/usr/include/qt3/ \
                        --with-qt-libraries=/usr/lib/qt3/;make
user$ sudo make install
  • –prefix 选项是指定 qvfb2 的安装路径,此事例中的路径 /usr/local 也是 qvfb2 的默认安装路径,跟 MiniGUI 的运行时配置文件 MiniGUI.cfg 文件中 pc_xvfb 项的指定路径相同。
  • –with-qt-includes 选项是指定 Qt3 的头文件路径。
  • –with-qt-libraries 选项指定了 Qt3 的库文件路径。

在命令行模式下,配置framebuffer设备

在没有 XWindow 环境下,我们可以利用 framebuffer 设备,来运行我们的 MiniGUI 程序,下边将以 ubuntu 8.04为例介绍如何配置framebuffer设备。
配置framebuffer设备:
1、
user$ sudo vi /etc/initramfs-tools/modules
加入如下三行内容
fbcon
vesafb
vga16fb

2、

user$ sudo vi /etc/modprobe.d/blacklist-framebuffer
把文件/etc/modprobe.d/blacklist-framebuffer里面的vesafb和vga16fb这两行给注释掉。

3、

user$ sudo gedit /boot/grub/menu.lst
在启动项的最后面加上 vga=0x317(视显示器和位数而定,此为1024*768*16bit)

各种色深和位数的配置号如下:( 注意:有些机器的配置不合此例,此时请运行”hwinfo –framebuffer”命令来查看具体的数值)

色深 640x480 800x600 1024x768 1280x1024
8位色 0x301 0x303 0x305 0x307
15位色 0x310 0x313 0x316 0x319
16位色 0x311 0x314 0x317 0x31A
24位色 0x312 0x315 0x318 0x31B

4、重启机器,之后查看 /dev/fb0 设备是否已经存在,如果存在,则说明目前 framebuffer 设备可以使用了。

MiniGUI 相关配置的调整
需要修改/usr/local/etc下的MiniGUI.cfg文件
user$ sudo vi /usr/local/etc/MiniGUI.cfg
修改输出引擎为fbcon,即将gal_engine=pc_xvfb改为gal_engine=fbcon。

修改输入引擎为console(此处以console为例),即将ial_engine=pc_xvfb改为ial_engine=console。

4.1.5 编译并运行示例程序

【提示】MiniGUI 演示程序默认在 pc_xvfb 引擎运行。在 PC Linux 上需要安装 qvfb2。

编译运行示例程序的具体步骤如下:

  • 此文档中 MiniGUI 演示程序的代码被放到了 /home/test/3.0.2/mg-samples-3.0.2 目录下。

user$ cd /home/test/3.0.2/mg-samples-3.0.2

  • 无论是在 MiniGUI 进程模式还是在 MiniGUI 线程模式下,编译过程都是一样的编译,如下:
user$ ./configure
user$ make

  • 多进程模式下运行演示程序,需要先后台启动 mginit 程序。如下是在多进程模式下运行 same 游戏的过程:
user$ cd mginit
user$ ./mginit &
user$ cd ../same
user$ ./same

  • 多线程模式下运行演示程序,相对简单,直接运行示例程序即可。如下是在多线程模式下运行 same 游戏的过程:

user$ cd same
user$ ./same

4.2 MiniGUI 3.0 在 Windows PC 开发系统上的安装和运行

4.3 MiniGUI 3.0 在目标系统上的安装和运行

4.3.1 嵌入式 Linux/uClinux

安装 MiniGUI 开发包

下边只是做一个简单的安装说明:将 MiniGUI 3.0 相关的头文件及其库文件拷贝到开发板上的某个目录下,此文档以 /home/minigui 目录为例。之后指定库路径,具体命令如下:

user$ export LD_LIBRARY_PATH=/home/minigui/lib:$LD_LIBRARY_PATH
将根据开发板实际情况修改好的 MiniGUI 运行时配置文件拷贝到适当的位置(MiniGUI.cfg 文件存放位置的说明请参见 第五章的第二节内容 )。

安装 MiniGUI 资源包

资源包不需要交叉编译,直接在 Linux PC 机上默认安装资源包。之后将安装在 /usr/local/share/minigui/res 目录下的资源包拷贝到开发板的 /home/minigui 目录下。需要注意MiniGUI 的运行时配置文件MiniGUI.cfg 文件中指定的资源路径要与MiniGUI 资源在开发板上的放置路径一致 。

依赖库的交叉编译

目前 MiniGUI 3.0 的依赖库都是使用 Automake/Autoconf 脚本组织的工程,通过在运行 ./configure 命令时指定特定的环境变量及其某些选项来完成交叉编译。下边将逐一介绍依赖库的交叉编译过程。

交叉编译 LibFreeType

FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType,OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想(下文中将会介绍到)。因此,FreeType的用户可以灵活地对它进行裁剪。

该函数库使用标准 GNU Automake/Autoconf 脚本组织,且通过 configure 命令提供了若干对 libfreetype 进行定制和配置的选项。

首先,可以通过命令 ./configure –help 命令,查看 configure 选项的一些帮助信息。了解 JPEG 库支持的 configure 选项后,之后可以整理出交叉编译配置命令行,进入到 jpeg 源码包目录下进行交叉编译。假定针对 hi3511 目标进行交叉编译,交叉编译配置命令行可以如下:

user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR=arm-hismall-linux-ar \
          LDFLAGS="-L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/hi3511/3511 \
            --build=i386-linux \
            --host=arm-linux \
            --target=arm-linux 
运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成objs/.libs目录,且在该目录下生成 FreeType 的动态库和静态库。此时运行 make install 命令,将会把头文件及其库文件安装到 configure 脚本 –prefix 选项指定的目录下,此处是安装到 /opt/hi3511/3511 目录下。即头文件被安装到 /opt/hi3511/3511/include 目录下,库文件被安装到 /opt/hi3511/3511/lib 目录下。

交叉编译 LibJPEG,LibPNG ,LibZ等依赖库

交叉编译 JPEG 函数库

MiniGUI 3.0 提供的 jpegsrc.v6b.tar.gz 源代码包,这个软件包提供了对 JPEG 格式图片进行编码或解码的接口。该函数库使用标准 GNU Automake/Autoconf 脚本组织,且通过 configure 命令提供了若干对 libjpeg 进行定制和配置的选项。

首先,可以通过命令 ./configure –help 命令,查看 configure 选项的一些帮助信息。了解 JPEG 库支持的 configure 选项后,之后可以整理出交叉编译配置命令行,进入到 jpeg 源码包目录下进行交叉编译。假定针对 hi3511 目标进行交叉编译,那么最终的交叉编译配置命令行可以如下:

user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR=arm-hismall-linux-ar \
          LDFLAGS="-L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/hi3511/3511 \
            --build=i386-linux \
            --host=arm-linux \
            --target=arm-linux \
            --enable-shared
运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成 .libs 目录,在该目录下生成 JPEG 的动态库和静态库,同时还会生成一些测试程序,如 cjpeg djpeg 等。如果运行 make install 命令,将会把头文件及其库文件安装到 configure 脚本 –prefix 选项指定的目录下,此处是安装到 /opt/hi3511/3511 目录下。(安装过程中可能会提示说不能创建某些文件,这时需要查看你要安装的路径下有没有对应的目录,如果没有需要自己创建。)

我们在上面的交叉编译配置命令行中,通过设置 CC、AR、CFLAGS 等环境变量,将交叉编译使用的参数传递给了最终的 makefile 文件,而通过 configure 命令的参数,如 –prefix、–build、–host 等选项,设置了安装路径前缀、宿主机系统、目标机系统等。

交叉编译 PNG 函数库

MiniGUI 3.0 提供的 libpng-1.2.30.tar.gz 源代码包,这个软件包提供了对 PNG 格式图片进行编码或解码的接口。该函数库使用标准 GNU Automake/Autoconf 脚本组织,且通过 configure 命令提供了若干对 libpng 进行定制和配置的选项。

首先,可以通过命令 ./configure –help 命令,查看 configure 选项的一些帮助信息。了解 PNG 库支持的 configure 选项后,之后可以整理出交叉编译配置命令行,进入到 png 源码包目录下进行交叉编译。假定针对 hi3511 目标进行交叉编译,交叉编译配置命令行可以如下:

user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR=arm-hismall-linux-ar \
          LDFLAGS="-L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/hi3511/3511 \
            --build=i386-linux \
            --host=arm-linux \
            --target=arm-linux 
运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成 .libs 目录,且在该目录下生成 PNG 的动态库(该选项默认是打开的,所以不需要加入 –enable-shared选项)和静态库。此时运行 make install 命令,将会把头文件及其库文件安装到 configure 脚本 –prefix 选项指定的目录下,此处是安装到 /opt/hi3511/3511 目录下。即头文件被安装到 /opt/hi3511/3511/include 目录下,库文件被安装到 /opt/hi3511/3511/lib 目录下。

交叉编译 Z 函数库

MiniGUI 3.0 提供的 zlib-1.2.3.tar.gz 源代码包,这个软件包提供UNIX 系统中标准的 Z 压缩/解压缩算法。该函数库使用标准 GNU Automake/Autoconf 脚本组织,且通过 configure 命令提供了若干对 libz 进行定制和配置的选项,可生成 zlib 的动态库和静态库。

首先,可以通过命令 ./configure –help 命令,查看 configure 选项的一些帮助信息。了解 PNG 库支持的 configure 选项后,之后可以整理出交叉编译配置命令行,进入到 zlib 源码包目录下进行交叉编译。假定针对 hi3511 目标进行交叉编译,交叉编译配置命令行可以如下:

user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR='arm-hismall-linux-ar rc' \
          LDFLAGS="-L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/hi3511/3511 \
            --shared
运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成 zlib 的动态库和静态库。此时运行 make install 命令,将会把头文件及其库文件安装到 configure 脚本 –prefix 选项指定的目录下,此处是安装到 /opt/hi3511/3511 目录下。即头文件被安装到 /opt/hi3511/3511/include 目录下,库文件被安装到 /opt/hi3511/3511/lib 目录下。

交叉编译编译并运行示例程序

  • 示例程序的交叉编译
交叉编译示例程序,进入到示例程序源代码目录。假定针对 hi3511 目标进行交叉编译,交叉编译配置命令行可以如下:
user$ CC=arm-hismall-linux-gcc \
          CXX=arm-hismall-linux-g++ \
          LD=arm-hismall-linux-ld \
          AS=arm-hismall-linux-as \
          AR='arm-hismall-linux-ar rc' \
          LDFLAGS="-L/opt/hi3511/3511/lib -L/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/lib " \
          CFLAGS="-I/opt/hi3511/3511/include -I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          CPPFLAGS="-g -I/opt/hi3511/3511/include -I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          CXXFLAGS="-g -I/opt/hi3511/3511/include -I/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr/include " \
          ./configure --prefix=/opt/houhi3511/3511 \
               --build=i386-linux \
               --host=arm-linux \
               --target=arm-linux 

运行上述命令后,即可生成针对 hi3511 的 Makefile 文件,然后运行 make 命令,即可生成相应的可执行程序。

【说明】

/opt/hi3511/3511/ 这个路径是 MiniGUI 及其依赖库交叉编译后的库和头文件路径。

/opt/hi3511/hisi3512/toolchains/gcc-3.4.3-uClibc-0.9.28/usr 这个路径是交叉工具链的一些库和头文件路径。

  • 示例程序的运行

因为 MiniGUI 的安装和 MiniGUI 资源的安装已经完成,只需要拷贝交叉编译后示例程序的可执行文件及其需要的资源文件到开发板上,直接运行即可。以 mg-samples-3.0.2 示例中 src 目录下的可执行程序为例。只需将 mg-samples-3.0.2/src 目录下的可执行程序和 res 目录拷贝到目标板的相应位置(此文档中是将这些文件拷贝到开发板的 /home/minigui/bin 目录下)。

    • 多进程模式下运行演示程序,需要先后台启动 mginit 程序。如下是在多进程模式下运行 button 程序的过程:
user$ ./mginit &
user$ ./button
    • 多线程模式下运行演示程序,相对简单,直接运行示例程序即可。如下是在多线程模式下运行 button 程序的过程:
user$ ./button

            </div>

猜你喜欢

转载自blog.csdn.net/Meteor_s/article/details/81669081