假定您第一次安装 MiniGUI ,本章将引导您在 Linux 操作系统上以默认方式快速安装并运行 MiniGUI,其中第三方组件和库文件的安装方法是以Ubuntu 8.04 发行版为例的。
MiniGUI 提供了最简便的安装方法,只需要挂载光盘并运行光盘中根目录下的 install.sh 脚本即可。您可以通过下边的命令查看 install.sh 的帮助信息。
user$ ./install.sh --help
由帮助信息可得到安装时需要以下参数:
以下是安装 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
安装资源包的步骤如下:
user$ cd /home/test/3.0.2/minigui-res-3.0.2
user$ ./configure --prefix=/usr/local; make user$ sudo make install
在运行 MiniGUI 之前,需要安装 MiniGUI 所需的依赖库。除了在使用 SVGALib 时需要第三方函数库的支持外,MiniGUI 还使用了 LibFreeType、LibPNG、LibJPEG、LibZ 第三方的依赖库。这些依赖库都是使用 GNU Automake/Autoconf 脚本组织工程,通过在运行 ./configure 命令时指定特定的环境变量及某些选项来完成这些库的编译和安装。我们可以通过在这些依赖库源码目录下运行 ./configure --help 命令,来查看各自 configure 脚本可以接受的开关参数。本节给出了各依赖库在 Linux PC 上的安装步骤,仅供参考。
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 目录下。
运行 MiniGUI 所依赖的函数库还包括用来支持 JPEG 图片的 libjpeg、用来支持 PNG 图片的 libpng 等等。和 FreeType 库一样,常见的 Linux 发行版中均已包含这些函数库。
下面将举例说明 Linux 发行版中没有安装这些依赖库,应该如何安装。
user$ ./configure --prefix=/usr/local; make user$ sudo make install这样 PNG 库就会被安装到 /usr/local 目录下。
user$ ./configure --prefix=/usr/local --enable-shared; make user$ sudo make install安装过程中可能会提示说不能创建某些文件,这时需要查看你要安装的路径下有没有对应的目录,如果没有需要自己创建。这样 JPEG 的动态库和静态库就会被安装到 /usr/local 目录下。
user$ ./configure --prefix=/usr/local; make user$ sudo make install这样 Z 库就会被安装到 /usr/local 目录下。
目前 PC Linux 版本的 MiniGUI 3.0 默认的虚拟帪缓冲区工具是 pc_xvfb,qvfb2 是 pc_xvfb 引擎所对应的虚拟帧缓冲区程序在 PC Linux 上的一种实现方式。
编译安装qvfb2,需要先安装Qt,并且Qt版本需要大于等于3.0.3。具体的安装过程可以参考源代码中的 README 文件。下边举例说明一下 qvfb 在 ubuntu 环境下安装的具体过程。
user$ sudo apt-get install build-essential xorg-dev
user$ sudo apt-get install libqt3-headers libqt3-mt libqt3-mt-dev
user$ ./configure --prefix=/usr/local --with-qt-includes=/usr/include/qt3/ \ --with-qt-libraries=/usr/lib/qt3/;make user$ sudo make install
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 设备可以使用了。
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。
【提示】MiniGUI 演示程序默认在 pc_xvfb 引擎运行。在 PC Linux 上需要安装 qvfb2。
编译运行示例程序的具体步骤如下:
user$ cd /home/test/3.0.2/mg-samples-3.0.2
user$ ./configure user$ make
user$ cd mginit user$ ./mginit & user$ cd ../same user$ ./same
user$ cd same user$ ./same
下边只是做一个简单的安装说明:将 MiniGUI 3.0 相关的头文件及其库文件拷贝到开发板上的某个目录下,此文档以 /home/minigui 目录为例。之后指定库路径,具体命令如下:
user$ export LD_LIBRARY_PATH=/home/minigui/lib:$LD_LIBRARY_PATH将根据开发板实际情况修改好的 MiniGUI 运行时配置文件拷贝到适当的位置(MiniGUI.cfg 文件存放位置的说明请参见 第五章的第二节内容 )。
资源包不需要交叉编译,直接在 Linux PC 机上默认安装资源包。之后将安装在 /usr/local/share/minigui/res 目录下的资源包拷贝到开发板的 /home/minigui 目录下。需要注意MiniGUI 的运行时配置文件MiniGUI.cfg 文件中指定的资源路径要与MiniGUI 资源在开发板上的放置路径一致 。
目前 MiniGUI 3.0 的依赖库都是使用 Automake/Autoconf 脚本组织的工程,通过在运行 ./configure 命令时指定特定的环境变量及其某些选项来完成交叉编译。下边将逐一介绍依赖库的交叉编译过程。
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 目录下。
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 等选项,设置了安装路径前缀、宿主机系统、目标机系统等。
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 目录下。
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 目录下。
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 目录下)。
user$ ./mginit & user$ ./button
user$ ./button