minigui桌面环境安装 交叉编译笔记

1、安装minigui 5.0 必须在ubuntu 20.x安装,直接运行build-dep.sh 、build-minigui.sh脚本就可以一路无障碍自动安装好;
对了,安装之前 ubuntu 20.x的虚拟内存要设置4G,参照 这个网址设置,这个网址是设置2G,自己设置4G https://blog.csdn.net/taiyang1987912/article/details/41695895/ (不过我安装minigui5.0 运行 cell phone 程序会有点问题)

2、安装minigui 4.0 必须在ubuntu 16.x安装,直接运行build-deps.sh 、build-all.sh就可以自动安装好,无须再干涉;
安装之前 ubuntu 16.x的虚拟内存也要设置4G。(ubuntu 16.x安装minigui4.0 后运行cell phone 程序 没有任何问题)

3、获取minigui 源码途径:1:直接运行文件buil-miigui x.x 的fetch-all.sh 脚本; 2:直接在github 网站 或者 gitlab 网站下载;推荐gitlab 下载速度更快。

交叉编译:
NOTE:删掉 -I$STAGING_DIR/target/usr/include -I$TOOLCHAIN_DIR/usr/include -I$TOOLCHAIN_DIR/include
NOTE: grep "字符串" /目录 -r 递归查找目录下所有文件是否有指定的字符串;
1、交叉编译时,make时提示错误发现某个文件里有错误,但是这个文件是从i386(x86平台)文件夹取的,交叉编译的文件应该取至工具链;所以文件的来源就不对,make时应该指定ARM交叉编译平台,从交叉工具链里取文件;比如编译libpng时 ./configure 其中应该要添加参数LDFLAGS="-L/usr/local/arm/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/arm-linux-gnueabihf /libc/usr/ lib/ -L…默认其他路径" 而CFLAG="-rpath="/usr/local/arm/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/arm-linux-gnueabihf /libc/usr/ lib/: …默认其他路径"
而头文件路径 CPPFLAGS="-I/usr/local/arm/gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf/arm-linux-gnueabihf /libc/usr/ include -I …默认其他路径 "

2、编译libinput 1.10.0,meson 选项添加 --pkg-config-path = /…/rootfs/usr/local/lib/pkgconfig/

3、交叉编译harfbuzz时 ,./configure时提示错误C comlier cannot create execuble;查看 config.log(这个文件可以查看configure时错在哪里) 在collet2 这里就显示未找到-lbz2 其实就是没找到libbz2.so动态库,使用指令 locate libbz2 就会发现 这个动态库又在了/usr/lib/i386-linux-gnu(x86 平台)下的动态库,所以即使ubuntu存在这个动态库文件,./configure配置时还是提示找不到,因为不是ARM文件。
解决办法:直接下载libbz2源码,使用交叉编译,./configure时指定这个库的路径; 第二个办法 直接删掉-lbz2 然后提示第 1 点的问题,按照第 1 点办法就可以解决并编译安装成功。

4、编译libudev ,make 时提示错误 undefine reference "mq_getattr" ;configure 选项添加LIBS="-lrt"

5、编译minigui,make时提示linux/input-event-codes.h No such file or directory;./configure选项CPPFLAGS 添加路径 /home/wzh/build-minigui-4.0/cross_build/imx-build/3rd-party/libevdev-1.8.0/include 这个路径下有这个文件linux/input-event-codes.h
再make 提示错误from /usr/include/freetype2/ft2build.h…;它自动又从x86平台取文件,检查/.../cross-build/imx-build/rootfs/usr/local/include/freetype2/文件夹存在ft2huild.h;所以./configure选项CPPFLAGS再次添加路径/home/..../rootfs/usr/local/include/freetype2
但是无论怎么添加CPPFLAGS的路径,它寻找freetype2的路径还是usr/include/,就直接查找makefile文件,发现有个变量:FT2_INC_DIR=-I/usr/include/freetype2;makefile 由configure文件产生,所以查看configure文件,发现configure 选项--with-ft2-include复值给FT2_INC_DIR,但是./configure ....... --with-ft2-include=/.../freetype2还是不能改变FT2_INC_DIR的值,所以干脆直接修改configure FT2_INC_DIR=/....../rootfs/usr/local/include/freetype2就可以了; 增加编译参数-ldl,编译mg-sample需要用到

6、编译mgncs4touch ,make 提示 mgplus.so : undefine reference …tf_engine…,指mgplus库没有定义某个函数;解决方法:重新安装mgplus,并添加--enable-ft2supports=yes
make 提示 harfbuzz.so :undefine reference to hb_ext_get_unicode_funcs; harfbuzz库修改文件hb-unicode.cc ;自己定该函数: hb_unicode_funcs_t * hb_ext_get_unicode_funcs() { hb_unicode_funcs_t *t =NULL; return t; }

7、交叉编译应用程序使用以下配置进行编译:
#!/bin/bash
#交叉编译必须使用pkg-config以下配置路经,否则不能准确添加哪些依赖库
export PKG_CONFIG_PATH=/home/wzh/build-minigui-4.0/cross-build/imx-build/rootfs/usr/local/lib/pkgconfig
export PKG_CONFIG_LIBDIR=/home/wzh/build-minigui-4.0/cross-build/imx-build/rootfs/usr/local/lib/pkgconfig

echo $PKG_CONFIG_PATH
INCLUDE=$(pkg-config --cflags --libs mgeff)

arm-linux-gnueabihf-gcc -o curve curve.c -lminigui_ths -lpthread -ljpeg -lpng -lz -ldl -lmgeff -lblkid -lchipmunk -ldrm -levdev -lfreetype -lharfbuzz -linput -lkmod -lmgncs -lmgncs4touch -lmgplus -lmgutils -lmtdev -lsqlite3 -ludev -luuid -lm -lrt $INCLUDE

8、移植到开发板Minigui.cfg配置文件修改:
[system]
gal_engine=fbcon //图像引擎
defaultmode=800x480-24bpp //这里两处已定改成一样的

ial_engine=libinput //输入引擎
mdev=/dev/input/event1
mtype=none

[fbcon]
defaultmode=800x480-24bpp
dpi=96

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值