赞
踩
承接https://blog.csdn.net/qqq1112345/article/details/136653553
为了解决glmark2在dayu200开发板运行错误的问题,需要构建出基于OpenHramony4.0的mesa3d库的arm64版本,网上搜到的一些指导文章貌似都已经过时,因此开了此坑。
sudo apt-get install python3 python3-pip ninja-build
pip3 install --user meson
sudo apt-get install pkg-config
没啥说的,直接按readme.md操作即可。
进入目录/home/openharmony/third_party/mesa3d,运行编译命令
python ohos/build_ohos.py /home/openharmony rk3568 ./
该命令按readme.md提示修改参数中的路径即可。
报错
meson.build:983:2: ERROR: Problem encountered: Python (3.x) mako module >= 0.8.0 required to build mesa.
解决
pip install mako
解决:退回到ohos根目录,编译部件expat。运行命令
./build.sh --product-name rk3568-T third_party/expat:expat
然后在通过find命令找到相关的头文件和库目录,修改mesa3d/ohos/pkgconfig_template/expat.pc
因为是在windows下改的,因此换行符有问题,不影响,不用在意哈哈,然后路径也因为偷懒用的绝对路径,追求极致的大家可以用“${ohos_project_dir}”。
然后删除mesa3d的相关配置文件重新编译
rm build-ohos pkgconfig cross_file -r
按错误提示,删除对应文件中的重复接口即可。
unable to find library -lhilog
解决:
同样再次删除相关配置文件后重新编译。
解决以上错误后,mesa3d成功编译。
root@a095fe4330fe:/home/openharmony/third_party/mesa3d# find ./ -name *.so
./build-ohos/src/gbm/libgbm.so
./build-ohos/src/mapi/shared-glapi/libglapi.so
./build-ohos/src/mapi/es1api/libGLESv1_CM.so
./build-ohos/src/mapi/es2api/libGLESv2.so
./build-ohos/src/gallium/targets/dri/mi0283qt_dri.so
./build-ohos/src/gallium/targets/dri/meson_dri.so
./build-ohos/src/gallium/targets/dri/rockchip_dri.so
./build-ohos/src/gallium/targets/dri/sun4i-drm_dri.so
./build-ohos/src/gallium/targets/dri/mcde_dri.so
./build-ohos/src/gallium/targets/dri/mali-dp_dri.so
./build-ohos/src/gallium/targets/dri/imx-lcdif_dri.so
./build-ohos/src/gallium/targets/dri/kirin_dri.so
./build-ohos/src/gallium/targets/dri/rcar-du_dri.so
./build-ohos/src/gallium/targets/dri/imx-drm_dri.so
./build-ohos/src/gallium/targets/dri/ingenic-drm_dri.so
./build-ohos/src/gallium/targets/dri/armada-drm_dri.so
./build-ohos/src/gallium/targets/dri/exynos_dri.so
./build-ohos/src/gallium/targets/dri/komeda_dri.so
./build-ohos/src/gallium/targets/dri/st7735r_dri.so
./build-ohos/src/gallium/targets/dri/hx8357d_dri.so
./build-ohos/src/gallium/targets/dri/ili9225_dri.so
./build-ohos/src/gallium/targets/dri/pl111_dri.so
./build-ohos/src/gallium/targets/dri/libgallium_dri.so
./build-ohos/src/gallium/targets/dri/ili9341_dri.so
./build-ohos/src/gallium/targets/dri/mediatek_dri.so
./build-ohos/src/gallium/targets/dri/repaper_dri.so
./build-ohos/src/gallium/targets/dri/st7586_dri.so
./build-ohos/src/gallium/targets/dri/imx-dcss_dri.so
./build-ohos/src/gallium/targets/dri/stm_dri.so
./build-ohos/src/gallium/targets/dri/panfrost_dri.so
./build-ohos/src/gallium/targets/dri/mxsfb-drm_dri.so
./build-ohos/src/egl/libEGL.so
./build-ohos/install/lib/libglapi.so
./build-ohos/install/lib/dri/mi0283qt_dri.so
./build-ohos/install/lib/dri/meson_dri.so
./build-ohos/install/lib/dri/rockchip_dri.so
./build-ohos/install/lib/dri/sun4i-drm_dri.so
./build-ohos/install/lib/dri/mcde_dri.so
./build-ohos/install/lib/dri/mali-dp_dri.so
./build-ohos/install/lib/dri/imx-lcdif_dri.so
./build-ohos/install/lib/dri/kirin_dri.so
./build-ohos/install/lib/dri/rcar-du_dri.so
./build-ohos/install/lib/dri/imx-drm_dri.so
./build-ohos/install/lib/dri/ingenic-drm_dri.so
./build-ohos/install/lib/dri/armada-drm_dri.so
./build-ohos/install/lib/dri/exynos_dri.so
./build-ohos/install/lib/dri/komeda_dri.so
./build-ohos/install/lib/dri/st7735r_dri.so
./build-ohos/install/lib/dri/hx8357d_dri.so
./build-ohos/install/lib/dri/ili9225_dri.so
./build-ohos/install/lib/dri/pl111_dri.so
./build-ohos/install/lib/dri/ili9341_dri.so
./build-ohos/install/lib/dri/mediatek_dri.so
./build-ohos/install/lib/dri/repaper_dri.so
./build-ohos/install/lib/dri/st7586_dri.so
./build-ohos/install/lib/dri/imx-dcss_dri.so
./build-ohos/install/lib/dri/stm_dri.so
./build-ohos/install/lib/dri/panfrost_dri.so
./build-ohos/install/lib/dri/mxsfb-drm_dri.so
./build-ohos/install/lib/libGLESv2.so
./build-ohos/install/lib/libGLESv1_CM.so
./build-ohos/install/lib/libEGL.so
./build-ohos/install/lib/libgbm.so
根据前文运行glmark2时的错误提示,将编译出的mesa3d动态库打包到system镜像的lib目录下,方法参考前文中将glmark2相关文件打包到vendor镜像即可。
设备运行结果如下:
缺库的问题已经解决,继续解决其他问问题。
替换GPU库为mesa3d编译出来的,参照
https://blog.csdn.net/isoftstone_HOS/article/details/130622073
结果:
发现缺库,本以为相关库应该存在于/third_party/mesa3d/build-ohos/install/lib/dri,结果没有。。
在x86的工具链有同名库文件,但架构不同,不能拿来用,
arm的工具链也有,可以拿过来打包进system.img试一下
/usr/lib/aarch64-linux-gnu/dri/kms_swrast_dri.so
/usr/lib/aarch64-linux-gnu/dri/swrast_dri.so
测试失败,这两个库不能拿来用
MESA-LOADER: failed to open kms_swrast: Error loading shared library
/system/lib/kms_swrast_dri.so: Exec format error (search paths
/system/lib, suffix _dri) failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast: Error loading shared library
/system/lib/swrast_dri.so: Exec format error (search paths
/system/lib, suffix _dri) failed to load swrast driver
但构建mesa的时候,添加swrast 选项重新编译,也没有发现产物中有这两个库。。。
除此之外还报了“aduit denied {dac_override}”的错误,应该是权限问题,打算参照https://blog.csdn.net/jbhand/article/details/109776691 解决一下,但还没有找到对应的rc配置文件。
让人头大。。。。
解决:
修改ohos的编译脚本文件/home/openharmony/third_party/mesa3d/ohos/build_ohos.py
清空配置,重新编译,成功得到缺失的动态库文件。打包测试
桌面也起不来,继续修复。。。。
暂无
https://forums.openharmony.cn/forum.php?mod=viewthread&tid=944
https://blog.csdn.net/zhangh571354026/article/details/132913564
https://gitee.com/openharmony/third_party_mesa3d/blob/OpenHarmony-4.0-Release/ohos/README_zh.md
https://blog.csdn.net/u010164190/article/details/134588014
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。