minigui 3.0.12移植

本文详细介绍了如何将 Minigui 3.0.12 移植到基于 Ubuntu 10.10 的 Linux ARM 平台,包括下载必要的依赖文件,如 zlib、freetype、jpeg、libpng 等,并提供详细的编译和配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目紧急,先移植minigui看看效果再决定使用那个GUI方案

移植minigui需要到非漫官网下载以下文件:

  1. zlib-1.2.2.tar.gz
  2. freetype-2.3.9-fm20100818.tar.gz
  3. jpegsrc.v7.tar.gz
  4. libminigui-gpl-3.0.12.tar.gz
  5. libpng-1.2.37.tar.gz
  6. mg-samples-3.0.12.tar.gz
  7. minigui-res-be-3.0.12.tar.gz
  8. 其他文件依据自己项目决定下载。

编译平台:

Ubuntu server 10.10,Linux 2.6.35-22-server #35-Ubuntu SMP Sat Oct 16 22:02:33 UTC 2010 x86_64 GNU/Linux。工具链为:arm-linux-gnueabihf,版本信息如下:

使用内建 specs。
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/david.xiang/arm-linux-gnueabihf-4.8.3-201404/bin/../libexec/gcc/arm-linux-gnueabihf/4.8.3/lto-wrapper
目标:arm-linux-gnueabihf
配置为:/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/src/gcc-linaro-4.8-2014.04/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install --with-sysroot=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --enable-multilib --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3-d16 --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1-4.8-2014.04 - Linaro GCC 4.8-2014.04' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-isl=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-gold --with-local-prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long --with-mode=thumb --with-float=hard
线程模型:posix
gcc 版本 4.8.3 20140401 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2014.04 - Linaro GCC 4.8-2014.04)

运行环境为:

arm,Linux平台,Linux (none) 3.18.30 #1 PREEMPT Tue Jun 14 18:29:57 CST 2016 armv7l GNU/Linux。

移植步骤:

1. zlib-1.2.2

tar -zxvf zlib-1.2.2.tar.gz
./configure –shared
配置结束后修改工具链:

PREFIX=arm-linux-gnueabihf-
CC=$(PREFIX)gcc
LDSHARED=$(CC) -shared -Wl,-soname,libz.so.1
CPP=$(CC) -E
AR=$(PREFIX)ar rc
prefix =../build

CC编译工具修改为实际使用的工具,prefix表示make install的时候把最终的生成文件放置在那个地方。
然后make:

arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o example.o example.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o adler32.o adler32.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o compress.o compress.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o crc32.o crc32.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o gzio.o gzio.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o uncompr.o uncompr.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o deflate.o deflate.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o trees.o trees.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o zutil.o zutil.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o inflate.o inflate.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o infback.o infback.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o inftrees.o inftrees.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o inffast.o inffast.c
arm-linux-gnueabihf-gcc -shared -Wl,-soname,libz.so.1 -o libz.so.1.2.2 adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o
rm -f libz.so libz.so.1
ln -s libz.so.1.2.2 libz.so
ln -s libz.so.1.2.2 libz.so.1
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP -o example example.o -L. libz.so.1.2.2
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o minigzip.o minigzip.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP -o minigzip minigzip.o -L. libz.so.1.2.2

make install:

arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o example.o example.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o adler32.o adler32.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o compress.o compress.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o crc32.o crc32.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o gzio.o gzio.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o uncompr.o uncompr.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o deflate.o deflate.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o trees.o trees.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o zutil.o zutil.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o inflate.o inflate.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o infback.o infback.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o inftrees.o inftrees.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o inffast.o inffast.c
arm-linux-gnueabihf-gcc -shared -Wl,-soname,libz.so.1 -o libz.so.1.2.2 adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o
rm -f libz.so libz.so.1
ln -s libz.so.1.2.2 libz.so
ln -s libz.so.1.2.2 libz.so.1
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP -o example example.o -L. libz.so.1.2.2
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP   -c -o minigzip.o minigzip.c
arm-linux-gnueabihf-gcc -fPIC -O3 -DUSE_MMAP -o minigzip minigzip.o -L. libz.so.1.2.2

2. freetype-2.3.9-fm20100818

tar -zxvf freetype-2.3.9-fm20100818.tar.gz
configure配置:
./configure –host=arm-linux-gnueabihf –enable-static –disable-shared
这里写图片描述
修改makefile:freetype-2.3.9-fm20100818/builds/unix/unix-cc.mk
prefix =../build
其他不一样的地方参照上一步zlib的配置。
请注意不要修改下面的cc:

# export symbols
#
CCraw_build  := gcc # native CC of building system
E_BUILD      :=     # extension for exexutable on building system
EXPORTS_LIST := $(OBJ_DIR)/ftexport.sym
CCexe        := $(CCraw_build) # used to compile `apinames' only

不然会导致以下错误:

freetype-2.6/objs/apinames: 无法执行二进制文件
freetype-2.6/objs/ftexport.sym] 错误 126

make distclean
Make
出错找不到zlib的头文件:

freetype-2.6/src/sfnt/sfnt.c:31:
/usr/include/libpng12/png.h:514:18: 致命错误:zlib.h: 没有那个文件或目录
 #include "zlib.h"

这步错误说明编译freetype的时候找不到我们上一步生成的zlib,把环境变量指向刚才生成的build文件夹即可。
比如在我的电脑:

export LD_LIBRARY_PATH=/home/youname/projectXXX/build/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=/home/youname/projectXXX/build/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=/home/youname/projectXXX/build/include:$CPLUS_INCLUDE_PATH

上面的youname请换为实际的电脑workspace,projectXXX换为你的project名字,本质上就是指向我们编译生成的地方。LD_LIBRARY_PATH指向lib的地方,C_INCLUDE_PATH是c头文件的地方,CPLUS_INCLUDE_PATH是c++头文件的地方。

make结束后,make install。

3. jpeg-7

tar -zxvf jpegsrc.v7.tar.gz
configure配置:
./configure CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AS=arm-linux-gnueabihf-as AR=arm-linux-gnueabihf-ar CXX=arm-linux-gnueabihf-g++ –enable-shared –host=arm-linux-gnueabihf
修改makefile里面的prefix指向。
这里写图片描述
然后make,make install

4. libpng-1.2.37

tar -zxvf libpng-1.2.37.tar.gz
configure配置:

./configure  CC=arm-linux-gnueabihf-gcc  LD=arm-linux-gnueabihf-ld AS=arm-linux-gnueabihf-as AR=arm-linux-gnueabihf-ar CXX=arm-linux-gnueabihf-g++ --enable-shared --host=arm-linux-gnueabihf

发现出错:

checking for pow in lm... (cached)yes
checking for zlibversion in -lz... no
configure:error: zlib not installed

该错误是CPPFLAGS没有设置的原因,如上面freetype的设置就可以了
同时设置两个环境变量指向我们的build文件夹。
export CPPFLAGS(g++链接的头文件)
export LDFLAGS(g++连接的lib文件)
make,make install。build文件夹里面就有我们的png文件了。

5. minigui-res-be-3.0.12

tar -zxvf minigui-res-be-3.0.12.tar.gz
configure配置:
./configure
修改makefile,知道工具链和安装目录
这里写图片描述
make,make install
minigui资源文件就放置在build/share目录下了。

6. libminigui-gpl-3.0.12

tar -zxvf libminigui-gpl-3.0.12.tar.gz
configure配置:
./configure –prefix=”/home/david.xiang/Seeker/gui/build” –host=arm-linux-gnueabihf –with-osname=linux –with-targetname=fbcon –enable-autoial –disable-vbfsupport –with-style=classic –enable-rbf16
按照上一步修改工具链和安装目录
这时候会出现下面error:
这里写图片描述
是我们没有获得license的问题,不管它,直接make。
select.h error:impossible constraint in ‘asm’,出错找不到ASM的定义:
这里写图片描述
去makefile里面把INCLUDES最后面的-L/usr/include去掉,不然就是出这个错误。
这里写图片描述
make,make install

7. mg-samples-3.0.12

tar -zxvf mg-samples-3.0.12.tar.gz
这个是minigui的demo sample。
configure配置:
./configure –host=arm-linux-gnueabihf –with-lang=zhcn
修改makefile里面的工具链和安装目录
出错周啊笨蛋minigui。

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

设置:PKG_CONFIG_PATH指向minigui.pc的路径
make,然后继续出错:
这里写图片描述
是因为对应的makefile里面少了连接zlib的库文件,加上就ok
LIBS后面加上-lz
make ,make install。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值