项目需要,要对miniGui开源版本1.3.3进行嵌入式移植,主机Ubuntu12.04.宿主ARM开发板。
1. 目前相关网站好像无法下载到miniGui源代码,不知道是个别情况还是今天网络有问题。信号本来在自己的电脑上找到了源代码(应该是以前下载下来留着有用)。
2. 将源代码解压到工作目录,cd进入miniGui目录后,按照网络的配置命令进行配置,没有遇到任何问题。(./configure --prefix=/home/ --host=arm-linux --target=arm-linux --build=i386-linux CC=arm-linux-gcc --with-osname=linux --with-style=classic --with-targetname=fbcon --enable-autoial --enable-commial --enable-rbf16 --disable-vbfsupport)。
3. 直接make,其中遇到2个问题:
fbvideo.c:19:63: error: asm/page.h: No such file or directory
fbvideo.c: In function 'FB_VideoInit':
fbvideo.c:368: error: 'PAGE_SIZE' undeclared (first use in this function)
a 报错<arm/page.h>找不到,所以page_size未定义。网上有人说是因为高内核版本已经没有这个头文件了,所以有2种解决办法。
1)找到老内核,拷贝page.h(本人采用)。
2) 包含 <unistd.h> 头文件,将 PAGE_SIZE 宏替代成 getpagesize() 函数调用(本人没试过)。
grid.c: In function 'AddCol':
grid.c:626: error: invalid lvalue in assignment
grid.c:627: error: invalid lvalue in assignment
grid.c:640: error: invalid lvalue in assignment
grid.c:641: error: invalid lvalue in assignment
grid.c:669: error: invalid lvalue in assignment
grid.c:670: error: invalid lvalue in assignment
grid.c:682: error: invalid lvalue in assignment
grid.c:683: error: invalid lvalue in assignment
grid.c: In function 'AddRow':
grid.c:735: error: invalid lvalue in assignment
grid.c:736: error: invalid lvalue in assignment
grid.c:747: error: invalid lvalue in assignment
grid.c:748: error: invalid lvalue in assignment
grid.c:776: error: invalid lvalue in assignment
grid.c:777: error: invalid lvalue in assignment
grid.c:790: error: invalid lvalue in assignment
grid.c:791: error: invalid lvalue in assignment
b 原因可能编译器版本太高,类似“(PGRIDCOLHDR)pCell3->pColHdr = pColHdr”这样的强制转换编译通不过,于是去掉强制转换改为“pCell3->pColHdr = pColHdr”就可以。
4.运气非常好,编译过程中就遇到这2个问题。
5.最后make install将目标结果安装在了我们指定的地方(前面prefix=home设定的目录)
6.我的home目录里有了开发和运行需要的头文件和库(etc,include,lib3个目录)