类海思平台(Hisi/Mc)开发板 MiniGUI3.0.12 的移植

一、MiniGUI相关资源下载及注意事项

相关资源均可在MiniGUI官网 http://www.minigui.com/zhcn/download/ 下载得到。

前提是需已装好对应平台的 toolchain,本文以 Mc 平台的 arm-mol-linux 为例。

编译配置选项 --prefix 用于指定编辑结果目录,可根据实际情况进行指定。

 

二、编译zlib库

1、解压zlib-1.2.8.tar.gz;

2、使用configure脚本重新指定Makefile的编译参数:

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-mol-linux-uclibcgnueabihf-gcc CXX=arm-mol-linux-uclibcgnueabihf-g++ LD=arm-mol-linux-uclibcgnueabihf-ld AS=arm-mol-linux-uclibcgnueabihf-as AR=arm-mol-linux-uclibcgnueabihf-ar ./configure --prefix=/home/test/miniGUI_3.0/output/zlib

b、然后直接 make && make install就能生成新的zlib库

 

三、编译png库

1、解压libpng-1.2.37.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-mol-linux-uclibcgnueabihf-gcc CXX=arm-mol-linux-uclibcgnueabihf-g++ LD=arm-mol-linux-uclibcgnueabihf-ld AS=arm-mol-linux-uclibcgnueabihf-as AR=arm-mol-linux-uclibcgnueabihf-ar ./configure --prefix=/home/test/miniGUI_3.0/output/libpng --host=arm-mol-linux-uclibcgnueabihf --enable-shared

b、若此时提示如下zlib未安装错误,将上一步安装的zlib库的路径,设置到环境变量中

export CFLAGS="-I/home/test/miniGUI_3.0/output/zlib/include"
       export LDFLAGS="-L/home/test/miniGUI_3.0/output/zlib/lib"

c、若编译时,报如下头文件未找到,则Makefile增加如下相关选项

 

四、编译jpeg库

1、解压jpegsrc.v7.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-mol-linux-uclibcgnueabihf-gcc CXX=arm-mol-linuxuclibcgnueabihf--g++ LD=arm-mol-linux-uclibcgnueabihf-ld AS=arm-mol-linux-uclibcgnueabihf-as ./configure --prefix=/home/test/miniGUI_3.0/output/jpeg --host=arm-mol-linux-uclibcgnueabihf --enable-shared

3、然后直接 make && make install就能生成新的jpeg库;

 

五、编译freetype库

1、解压freetype-2.6.1.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-mol-linux-uclibcgnueabihf-gcc CXX=arm-mol-linux-uclibcgnueabihf-g++ LD=arm-mol-linux-uclibcgnueabihf-ld AS=arm-mol-linux-uclibcgnueabihf-as AR=arm-mol-linux-uclibcgnueabihf-ar ./configure --prefix=/home/test/miniGUI_3.0/output/freetype --host=arm-mol-linux-uclibcgnueabihf

3、然后 make && make install 就能生成新的freetype库

 

六、安装minigui资源库

1、解压minigui-res-3.0.12.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

CC=arm-mol-linux-uclibcgnueabihf-gcc CXX=arm-mol-linux-uclibcgnueabihf-g++ LD=arm-mol-linux-uclibcgnueabihf-ld AS=arm-mol-linux-uclibcgnueabihf-as AR=arm-mol-linux-uclibcgnueabihf-ar ./configure --prefix=/home/test/miniGUI_3.0/output/minigui-res

3、然后直接 make && make install

 

七、编译minigui核心库

1、解压libminigui-3.0.12.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-mol-linux-uclibcgnueabihf-gcc CPP=arm-mol-linux-uclibcgnueabihf-cpp LD=arm-mol-linux-uclibcgnueabihf-ld AR=arm-mol-linux-uclibcgnueabihf-ar RANLIB=arm-mol-linux-uclibcgnueabihf-ranlib STRIP=arm-mol-linux-uclibcgnueabihf-strip ./configure --prefix=/home/test/miniGUI_3.0/output/minigui-core --build=i386-linux --host=arm-mol-linux-uclibcgnueabihf --target=arm-mol-linux-uclibcgnueabihf --enable-jpgsupport=yes --enable-pngsupport=yes --enable-incoreres=yes --enable-shared=yes --enable-static=yes

其中,--enable-incoreres=yes为内建资源选项,打开时相关配置需在mgetc.c中修改,而不是用MiniGUi.cfg配置文件。

b、出现如下提示可直接忽略进行编译

c. 若png等库无法enable,直接改config文件(ac_cv_lib_png_png_check_sig),然后重新config再编译

3、如下修改src/newgal/pcxvfb/Makefile文件,删掉/usr/include。然后直接 make && make install就能生成新的libminigui库,否则会如下报错。

4. 若找不到头文件 jpeglib.h / png.h / zlib.h,修改相应目录(如src/mybmp)下的Makefile,指定相关头文件路径。

 

八、编译libmgplus库

1、解压libmgplus-1.5.0.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

CC=arm-mol-linux-uclibcgnueabihf-gcc CPP=arm-mol-linux-uclibcgnueabihf-cpp LD=arm-mol-linux-uclibcgnueabihf-ld AR=arm-mol-linux-uclibcgnueabihf-ar RANLIB=arm-mol-linux-uclibcgnueabihf-ranlib STRIP=arm-mol-linux-uclibcgnueabihf-strip ./configure --prefix=/home/test/miniGUI_3.0/output/minigui-plus --build=i386-linux --host=arm-mol-linux-uclibcgnueabihf --target=arm-mol-linux-uclibcgnueabihf --enable-shared

3、然后直接 make && make install就能生成新的libmgplus库;

a、遇到如下编译问题

b、直接修改对应目录下的Makefile,CPPFLAGS增加上一步编出的miniGUI核心库的头文件路径

 

九、编译mg-samples

1、解压mg-samples-3.0.12.tar.gz

2、使用configure脚本重新指定Makefile的编译参数:

a、生成动态库指令(会生成对应平台下的Makefile):

CC=arm-mol-linux-uclibcgnueabihf-gcc CPP=arm-mol-linux-uclibcgnueabihf-cpp LD=arm-mol-linux-uclibcgnueabihf-ld AR=arm-mol-linux-uclibcgnueabihf-ar RANLIB=arm-mol-linux-uclibcgnueabihf-ranlib STRIP=arm-mol-linux-uclibcgnueabihf-strip ./configure PKG_CONFIG_PATH=/home/test/miniGUI_3.0/output/minigui-core/lib/pkgconfig --build=x86_64-linux --host=arm-mol-linux-uclibcgnueabihf --target=arm-mol-linux-uclibcgnueabihf

b、若报编译工具找不到,直接从可以正常config的目录中拷贝如下文件

        cp ../jpeg-7/config.guess ./
               cp ../jpeg-7/config.sub ./

c、若有如下警告可直接忽略

3、然后直接 make && make install,会在对应目录下生成相应的可执行程序。

a.头文件找不到,直接指定需要的头文件路径,每个需要编译的示例程序都会涉及,根据错误提示添加即可

b、找不到libdrm.a,则下载code编译(https://dri.freedesktop.org/libdrm/

CC=arm-mol-linux-uclibcgnueabihf-gcc CPP=arm-mol-linux-uclibcgnueabihf-cpp LD=arm-mol-linux-uclibcgnueabihf-ld AR=arm-mol-linux-uclibcgnueabihf-ar RANLIB=arm-mol-linux-uclibcgnueabihf-ranlib STRIP=arm-mol-linux-uclibcgnueabihf-strip ./configure --prefix=/home/test/miniGUI_3.0/output/libdrm --build=x86_64-linux --host=arm-mol-linux-uclibcgnueabihf --target=arm-mol-linux-uclibcgnueabihf

make && make install

c、有些库找不到,直接指定对应的静态库,同样每个需要编译的示例程序都会涉及,根据错误提示添加即可

c、对于上面 b 步骤中多出的 libfyfb.a 和 libmpi.a 两个库为平台相关的 fb 库和 mpi 库(libaudio_codec.a 则为相关依赖库,根据实际情况取舍),对于原生 sample 的编译可以不添加,而对于在平台运行的程序,则需要这两个库来编译,下面将阐述这两个库的由来。

 

十、使用平台的 fb 进行显示

1、以上已经基本完成的 miniGUI 的交叉编译,但此时还不能直接跑上面编译出的示例程序。

2、原生的 miniGUi 核心库使用的是 linux fb,因此在平台运行 sample 的话,需要改用平台的 fb,并正确初始化平台的 vou 模块。

3. libmpi.a(libaudio_codec.a)可以从 SDK 包中得到,而 libfyfb.a 主要使用 mpi 的接口进行 vou 模块的初始化。

4. 配置 MiniGUI.cfg 文件。

5. 修改 fbvideo.c 中的初始化内容,完成 vou 以及 fb 的初始化操作。然后依次重新编译 miniGUi 核心库以及示例程序,此时得到的可执行程序即可直接在平台运行了。

6. libfyfb.a 相关示例代码、MiniGUI.cfg 及 fbvideo.c 可参考:《miniGUI3.0移植修改.rar》

7. 较完整的miniGUI核心库、sample及其他依赖库可参考:《miniGUI3.0移植.rar》


版权声明:本文为dfhuang09原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。