在ubuntu下交叉编译miniGUI

一、使用到第三方库。

1、zlib:zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。

2、libpng:这个是用来显示png图形的,MiniGUI里很多图都是png的,如果没有这个库,MiniGUI将无法正常工作。

3、jpeg:用于显示jpeg图像,否则程序不能正常运行。

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

5、chipmunk:一个开源的2D物理引擎

6、harfbuzz:开源文本整形引擎,和文本相关的库文件

7、gvfb与qvfb2:这两个主要用于pc上仿真,在嵌入式平台上没用,就不做说明。


二、miniGUI的核心库和组件库
1、minigui-res:minigui3.0工具栏所使用的资源集合,包括字体、图标、位图等。

2、libminigui:minigui3.0的核心库。

3、libmgutils:(提供一些常用对话框的模板)

4、libmgplus(2D矢量图支持和图像加速,图形绘制接口的增强)

5、libmgeff  (动画框架)

6、libmgncs   (新控件集)

7、mgncs4touch(新空间集的有关触摸控件)

8、libmgi(提供输入接口)

 

三、在NXP平台编译
编译之前运行 source /opt/fsl-imx-fb/4.14-sumo/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

1、编译中zlib库
   第一种方法修改Makfile
   1)./configure --prefix=/usr/local/nxpminiGUI/  --share   
   2)修改Makefile文件  CFLAGS= -02 -pipe -g -feliminate-unused-debug-types -DUSE_MMAP
     修改为:CFLAGS= -02 -pipe -g -feliminate-unused-debug-types -DUSE_MMAP -fPIC  (添加-fPIC)
   3)make
   4)make install
   第二种方法修改configure
   1)修改configure  CFLAGS="$CFLAGS -DUSE_MMAP"   修改为:CFLAGS="$CFLAGS -DUSE_MMAP -fPIC"
   2)./configure --prefix=/usr/local/nxpminiGUI/  --share
   3)make
   4)make install
   
   //建议采用第二种方法   
   
 2、编译png库
   1)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux
   2)make
   3)make install
   
 3、编译jpeg库
   1)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared
   2)make
   3)make install
   
 4、编译freetype库
   1)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared
   2)make
   3)make install
   
 5、编译 chipmunk-5.3.1库
   1)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared
   2)make
   3)make install
   
 6、编译harfbuzz库
   1)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux
   2)make
   3)make install
   
 编译miniGUI库文件
 
 1、编译minigui-res
   1)dos2unix *
   2)./autogen.sh
   3)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared
   4)make
   5)make install
   
 2、编译minigui
   1)修改环境变量,NXP中没有设置头文件和库文件路径,设置环境变量
       export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/nxpminiGUI/include/freetype2/
       export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/nxpminiGUI/include/freetype2/
       export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nxpminiGUI/lib/
   2)dos2unix *
   3)./autogen.sh
   4)./configure --enable-develmode --with-runmode=$ths --disable-splash --disable-screensaver --with-ttfsupport=ft2 --with-ft2-includes=/usr/include/freetype2
   5)make
     会出现以下问题:
     1> warning认为是error的问题,去掉Werror, 在./configure.ac 去掉-Werror
     2>出现 fatal error: ft2build.h:No such file or directory  原因是没有设置环境变量,如第一所示:
     3>出现 include location "/usr/include" is unsafe for cross-compilation[Wpoison-system-directories]
             error :impossible constraint in 'asm' ........
        解决的方法,在makefile去掉-I/usr/include
                 修改点:在/minigui/src/newgal/pcxvfb 中Makefile.am 去掉-I/usr/include
                 修改点:在/minigui/src/newgal/qvfb 中Makefile.am 去掉-I/usr/include
                 修改点:在/minigui/src/newgal/rtos_xvfb中Makefile.am 去掉-I/usr/include
                 修改点:在/minigui/src/newgal/gdl 中Makefile.am 去掉-I/usr/include
      make clean  
      ./configure --enable-develmode --with-runmode=$ths --disable-splash --disable-screensaver --with-ttfsupport=ft2 --with-ft2-includes=/usr/include/freetype2(如果有问题)
      通过以下配置:
      ./configure --enable-develmode --with-runmode=$ths --disable-splash --disable-screensaver --with-ttfsupport=ft2 --with-ft2-includes=/usr/include/freetype2 --host=arm-linux --target=arm-linux --enable-pcxsupport PKG_CONFIG_PATH=/usr/local/nxpminiGUI/lib/pkgconfig CPPFLAGS=-I/usr/local/nxpminiGUI/include LDFLAGS=-L/usr/local/nxpminiGUI/lib
      make
   6)make install
   
  3、编译mgutils
    1)dos2unix *;./autogen.sh
    2)./configure.ac 去掉-Werror
    3./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared --enable-develmode
     1>如果不设置环境变量 PKG_CONFIG_PATH=/usr/local/nxpminiGUI/lib/pkgconfig  
       报错:
     checking for MINIGUI... configure: error: Package requirements (minigui >= 3.0.10) were not met:
     No package 'minigui' found
     Consider adjusting the PKG_CONFIG_PATH environment variable if you
     installed software in a non-standard prefix.
     2>如果不设置环境变量 CPPFLAGS=-I/usr/local/nxpminiGUI/include  
       会出现error:minigui/common.h:NO such file or directory (当前没有碰到此问题)
    4)make
      make的时候回出现libminigui_ths.so libjpeg.so libfreetype.so 格式不正确,把先前编译的库拷贝到/usr/local/lib 下面
    5)make install
    
  4、编译mgplus
    1)dos2unix *;./autogen.sh
    2)./configure.ac 去掉-Werror
    3)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared --enable-develmode PKG_CONFIG_PATH=/usr/local/nxpminiGUI/lib/pkgconfig CPPFLAGS=-I/usr/local/nxpminiGUI/include  
    4)make
       会出现error: ft2build.h:No such file or directory
      原因,设置了CPPFLAGS=-I/usr/local/nxpminiGUI/include 找不到include/freetype2  把  freetype2里面的ft2build.h和freetype拷贝到上一级目录
      解决了error:minigui/common.h:NO such file or directory 和ft2build.h:No such file or directory的错误
    5)make install
    
  5、编译mgeff
    1)dos2unix *;./autogen.sh
    2)./configure.ac 去掉-Werror
    3)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared --enable-develmode PKG_CONFIG_PATH=/usr/local/nxpminiGUI/lib/pkgconfig CPPFLAGS=-I/usr/local/nxpminiGUI/include  
    4)make
       会出现error: ft2build.h:No such file or directory
      原因,设置了CPPFLAGS=-I/usr/local/nxpminiGUI/include 找不到include/freetype2  把  freetype2里面的ft2build.h和freetype拷贝到上一级目录
      解决了error:minigui/common.h:NO such file or directory 和ft2build.h:No such file or directory的错误
      
      会出现libmgplus.so 格式不正确,把先前编译的库拷贝到/usr/local/lib 下面
    5)make install
    
  6、编译mgncs
    1)dos2unix *;./autogen.sh
    2)./configure.ac 去掉-Werror
    3)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared --enable-develmode PKG_CONFIG_PATH=/usr/local/nxpminiGUI/lib/pkgconfig CPPFLAGS=-I/usr/local/nxpminiGUI/include
    4)make
       会出现error: ft2build.h:No such file or directory
      原因,设置了CPPFLAGS=-I/usr/local/nxpminiGUI/include 找不到include/freetype2  把  freetype2里面的ft2build.h和freetype拷贝到上一级目录
      解决了error:minigui/common.h:NO such file or directory 和ft2build.h:No such file or directory的错误
      
      会出现libmgutils.so 格式不正确,把先前编译的库拷贝到/usr/local/lib 下面
    5)make install
    
   7、编译mgncs4touch
    1)首先编译 chipmunk-5.3.1 harfbuzz库
    2)编译png16(以前编译的png12,编译mgncs4touch需要png16)
    3)编译mgncs4touch的时候报错(c++库调用不了,问题没有查找到,去掉了sample文件夹),原因是编译sample的时候出现编译不过的问题 修改了configure.ac 里面的sample Makefile.am 里面的sample 文件夹
    4)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared --enable-develmode PKG_CONFIG_PATH=/usr/local/nxpminiGUI/lib/pkgconfig CPPFLAGS=-I/usr/local/nxpminiGUI/include
    5)make;make install
 
   8、编译mgi
    1)./configure --prefix=/usr/local/nxpminiGUI/ --host=arm-linux --target=arm-linux --enable-shared --enable-develmode PKG_CONFIG_PATH=/usr/local/nxpminiGUI/lib/pkgconfig CPPFLAGS=-I/usr/local/nxpminiGUI/include LDFLAGS=-L/usr/local/nxpminiGUI/lib
    2)make 的时候报错:/usr/local/nxpminiGUI/lib/libharfbuzz.so:undefined reference to 'FT_Done_MM_Var'
                       /usr/local/nxpminiGUI/lib/libharfbuzz.so:undefined reference to 'FT_Get_Var_Blend_Coordinates'
                       百度了一下发现它是freetype库的内容,怀疑我的freetype版本太旧,现在freetype-2.10.0.tar
    3)编译高版本freetype    报错:./builds/unix/libtool:No such file or directory

       安装libtool   
       编译安装       libtool   还是报错:./builds/unix/libtool:No such file or directory  找到/builds/unix/ 发现没有libtool 只用arm-linux-libtool 修改arm-linux-libtool 为libtool   
       libtool: link:cannot find the liabrary‘=libpng12.la’   去点编译example的规则 configure.am/configure.in makefile.am/makefile.in
    
    编译应用程序
    1、在编译应用程序的时候报
       libminigui_ths.so: undefined reference to 'pci_device_probe'
       libminigui_ths.so: undefined reference to 'pci_id_match_iterator_create'
       重新编译minigui库文件
       等有关的错误,因为当前没有pci的库,修改点修改配置文件configure 里面的_MGHAVE_PCIACCESS 注销$as_echo "#define __MGHAVE_PCIACCESS 1" >>confdefs.h
       修改minigui/src/newgal/fbcon/pci_smi.c 里面的#ifdef _MGHAVE_PCIACCESS 修改成#ifdef N_MGHAVE_PCIACCESS(随便起一个名字)
         

 

备注:编译根据环境不同和配置不同可能出现的问题不一样,有什么问题大家可以留言讨论

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值