miniGUI小记
来源:互联网 发布:java 单线程 编辑:程序博客网 时间:2024/05/16 01:24
编译miniGUI到arm上
编译工具:arm-none-linux-gnueabi-gcc
相关文件库:从官网处下载(http://www.minigui.org/en/download/)
├── freetype-2.3.9-fm20100818.tar.gz
├── jpegsrc.v7.tar.gz
├── libmgplus-1.2.4.tar.gz
├── libminigui-gpl-3.0.12.tar.gz
├── libpng-1.2.37.tar.gz
├── mg-samples-3.0.12.tar.gz
├── minigui-res-be-3.0.12.tar.gz
└── zlib-1.2.2.tar.gz
依赖关系:
libpng (zlib);
libmgplus(libminigui)
mg-samples(libminigui,libmgplus)
============JPEG
编译工具:arm-none-linux-gnueabi-gcc
相关文件库:从官网处下载(http://www.minigui.org/en/download/)
├── freetype-2.3.9-fm20100818.tar.gz
├── jpegsrc.v7.tar.gz
├── libmgplus-1.2.4.tar.gz
├── libminigui-gpl-3.0.12.tar.gz
├── libpng-1.2.37.tar.gz
├── mg-samples-3.0.12.tar.gz
├── minigui-res-be-3.0.12.tar.gz
└── zlib-1.2.2.tar.gz
依赖关系:
libpng (zlib);
libmgplus(libminigui)
mg-samples(libminigui,libmgplus)
============JPEG
- $ ./configure --target=arm-unknown-linux --host=arm-unknown-linux --prefix=/home/decuhi/miniGUI/target CC=arm-none-linux-gnueabi-gcc CPP=arm-none-linux-gnueabi-cpp LD=arm-none-linux-gnueabi-ld AR=arm-none-linux-gnueabi-ar RANLIB=arm-none-linux-gnueabi-ranlib STRIP=arm-none-linux-gnueabi-strip
- $ make
- $ make install
============FREETYPE
- $ ./configure --build=i686-linux --host=arm-unknown-linux --prefix=/home/decuhi/miniGUI/target CC=arm-none-linux-gnueabi-gcc CPP=arm-none-linux-gnueabi-cpp LD=arm-none-linux-gnueabi-ld AR=arm-none-linux-gnueabi-ar RANLIB=arm-none-linux-gnueabi-ranlib STRIP=arm-none-linux-gnueabi-strip
- $ make
- $ make install
============ZLIB
- $ ./configure --shared --prefix=/home/decuhi/miniGUI/target
- 修改Makefile,将编译相关的设置改成交叉工具链
- $ make
- $ make install
============LIBPNG
- $ cp scripts/makefile.linux Makefile
- 修改
- 21 # Utilities:
- 22 AR_RC=ar rc
- 23 CC=cc
- 24 MKDIR_P=mkdir -p
- 25 LN_SF=ln -sf
- 26 RANLIB=ranlib
- 为
- 21 # Utilities:
- 22 AR_RC=arm-none-linux-gnueabi-ar rc
- 23 CC=arm-none-linux-gnueabi-gcc
- 24 MKDIR_P=mkdir -p
- 25 LN_SF=ln -sf
- 26 RANLIB=arm-none-linux-gnueabi-ranlib
- 修改
- 32 prefix=/usr/local
- 为
- 32 prefix=/home/decuhi/miniGUI/target/
- 修改zlib库路径
- # Where the zlib library and include files are located.
- #ZLIBLIB=/usr/local/lib
- #ZLIBINC=/usr/local/include
- ZLIBLIB=$(prefix)/lib
- ZLIBINC=$(prefix)/include
- $ make
- $ make install
============LIBMINIGUI
- $ ./configure --build=i686-linux --target=arm-unknown-linux --host=arm-unknown-linux --prefix=/home/decuhi/miniGUI/target CC=arm-none-linux-gnueabi-gcc CPP=arm-none-linux-gnueabi-cpp CXX=arm-none-linux-gnueabi-g++ LD=arm-none-linux-gnueabi-ld AR=arm-none-linux-gnueabi-ar RANLIB=arm-none-linux-gnueabi-ranlib STRIP=arm-none-linux-gnueabi-strip
- 出现
- Going to generate license pictures ...
- ./configure: line 15530: ./runme.sh: No such file or directory
- 无视之
- $ vim src/newgal/pcxvfb/Makefile
- 修改194行,将/usr/include去掉:
- INCLUDES = -I$(abs_top_srcdir)/src/include -I$(abs_top_srcdir)/include
- -I$(abs_top_srcdir)/src/newgal/ -I/usr/include/
- 否则编译pcxvfb.c将出错
- $ make
- $ make install
===========LIBMGPLUS
- $ ./configure --target=arm-unknown-linux --host=arm-unknown-linux --prefix=/home/decuhi/miniGUI/target CC=arm-none-linux-gnueabi-gcc CPP=arm-none-linux-gnueabi-cpp CXX=arm-none-linux-gnueabi-g++ LD=arm-none-linux-gnueabi-ld AR=arm-none-linux-gnueabi-ar RANLIB=arm-none-linux-gnueabi-ranlib STRIP=arm-none-linux-gnueabi-strip
- $ make
- 出错:
- configure: WARNING: using cross tools not prefixed with host triplet
- checking pkg-config is at least version 0.9.0... yes
- 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.
- Alternatively, you may set the environment variables MINIGUI_CFLAGS
- and MINIGUI_LIBS to avoid the need to call pkg-config.
- See the pkg-config man page for more details.
- 解决办法:
- export PKG_CONFIG_PATH=/home/decuhi/miniGUI/target/lib/pkgconfig/
- 继续make
- $ make install
==============MG-SAMPLES
- $ ./configure --target=arm-unknown-linux --host=arm-unknown-linux --prefix=/home/decuhi/miniGUI/target CC=arm-none-linux-gnueabi-gcc CPP=arm-none-linux-gnueabi-cpp LD=arm-none-linux-gnueabi-ld AR=arm-none-linux-gnueabi-ar RANLIB=arm-none-linux-gnueabi-ranlib STRIP=arm-none-linux-gnueabi-strip CFLAGS="-I/home/decuhi/miniGUI/target/include"
- $ make
- $ cd src/ # 生成的可执行程序放在此目录,需手动复制
==============MINIGUI-RES
- 这些资源与平台无关,大致是一些图片
- $ ./configure --prefix=/home/decuhi/miniGUI/target
- $ make
- $ make install
- 执行install之后,会安装到target目录下的share文件夹
==============修改MiniGUI.cfg
- 将MiniGUI.cfg的开头部分改为:
- [system]
- # GAL engine and default options
- gal_engine=fbcon
- defaultmode=800x480-16bpp (对应板子分辨率)
- # IAL engine
- ial_engine=console
- mdev=/dev/input/mice
- mtype=IMPS2
- [fbcon]
- defaultmode=800x480-16bpp
修改res资源放置的路径,在配置文件中的[cursorinfo]->cursorpath以及[resinfo]->respath
否则运行sample程序时会出错。
否则运行sample程序时会出错。
- 修改路径:
- 103 [cursorinfo]
- 104 # Edit following line to specify cursor files path
- 105 cursorpath=/usr/local/share/minigui/res/cursor/
- 和
- 131 [resinfo]
- 132 respath=/usr/local/share/minigui/res/
比如,运行helloworld时显示:
- get_image_type: unknown type png.
- get_image_type: unknown type png.
- get_image_type: unknown type png.
- get_image_type: unknown type png.
- get_image_type: unknown type png.
- KERNEL>InitGUI: Count not init mouse cursor!
- KERNEL>InitGUI: Init failure, please check your MiniGUI configuration or resource.
小体会:
1.有些库用configure进行配置时,可以不用额外添加库文件的路径(类似CFLAGS=-L/<lib path>/或者 -I /<include path>/)
原因可能是configure的时候,自己会查找prefix参数下的include文件夹,跟lib文件夹
但是这里面也有个例外,就是在编译mg-samples部分,需要添加CFLAGS="-I/home/decuhi/miniGUI/target/include"才行,否则提示某个文件找不到
2.依赖库的编译顺序
转自:http://blog.chinaunix.net/uid-22731254-id-3429772.html
- miniGUI小记
- MiniGUI
- MiniGUi
- minigui
- MiniGui
- MiniGUI安装
- minigui起步
- minigui移植
- miniGUI安装
- MiniGui程序设计
- minigui移植
- 使用MiniGUI
- minigui总结
- MiniGUI 体系结构
- minigui程序
- miniGUI安装
- minigui时钟
- MiniGUI.cfg
- 模拟器与真机运行的背景图片不一样问题解决
- 13.01.17 C# Linq 查询最新的记录
- 第三方apk锁屏
- 数据库性能优化二:数据库表优化
- 设备模型之总线
- miniGUI小记
- 数据库性能优化三:程序操作优化
- Could not find lua. Lua is needed for some interfaces
- 理解js闭包
- ARM GCC内联汇编(Inline Assembly)的一些参考资料
- ARM非向量中断初始化程序和向量初始化程序
- usaco:Transformations
- Ext 中组件中的tbar 换行显示
- Could not find libmad on your system