Firefly开源社区

标题: 关于ROC-RK3399-PRO主板上运行用QT5.12.2开发的应用程序缺少libmali.so.1库文件的问题 [打印本页]

作者: 周飞    时间: 2021-5-18 15:40
标题: 关于ROC-RK3399-PRO主板上运行用QT5.12.2开发的应用程序缺少libmali.so.1库文件的问题
        在微机上安装了VirtalBox和ubuntu18.04,然后,根据维基教程上下载的firefly-qt-5.12.2-aarch64.tar文件,根据以下ReadMe

### 下载

对于 32位芯片,如 rk3288,下载 firefly-qt-5.12.2-arm.tar.gz;对于其它 64位芯片,如 rk3399,下载 firefly-qt-5.12.2-aarch64.tar.gz。

下文将以 firefly-qt-5.12.2-aarch64.tar.gz 为例进行说明。

### 目录结构

解压下载好的压缩包:

```bash
tar -zxvf firefly-qt-5.12.2-aarch64.tar.gz
```

目录结构:

```bash
firefly-qt-5.12.2-aarch64/
├── aarch64.tar.gz # 用于 Qt 程序运行的库文件、插件等
├── demo
│   └── mainwindow # demo 程序
├── firefly-qt-5.12.2-aarch64 # 交叉编译工具链
└── ReadMe # 使用说明
```

## 配置交叉编译环境

将工具链拷贝到主机的指定目录:

```bash
cd firefly-qt-5.12.2-aarch64/
# 该目录 `/opt/` 不可修改
cp -rdf firefly-qt-5.12.2-aarch64 /opt/
```

若拷贝失败,先修改下目录权限,再执行上述操作:

```bash
sudo chmod 777 /opt/
```

### 交叉编译

以 demo 程序为例,运行如下命令:

```bash
cd demo/mainwindow/
/opt/firefly-qt-5.12.2-aarch64/host/bin/qmake
make
```

编译完成后,会生成可执行程序 `demo/mainwindow/mainwindow`。



      根据教程一步一步在主机上安装完QT5.12.2,并按要求配置aarch64芯片的gcc和g++编译器等等设置。
然后,用QT5.12.2生成一个应用程序mainwindow。用QT自带的QT-5.12.2-GCC编译后,程序能够在主机上正确运行。用配置的QT-5.12.2-arrch64编译后,在主机上运行显示如下:

bash: ./mainwindow: 无法执行二进制文件: 可执行文件格式错误
root@zzf-VirtualBox:/home/zzf/proj/demo/build-mainwindow-qt_5_12_2_arrch64-Release#


     然后,在开发板的linux系统下,用firefly-qt-5.12.2-aarch64.tar.gz解压后的arrch64.tar文件,拷贝到开发板,按照以下ReadMe:

## 配置运行环境

使用 U盘将 aarch64.tar 拷贝到设备上:

```bash
cp /media/usb0/aarch64.tar /userdata/
```

解压:

```bash
cd /userdata/
tar -xvf aarch64.tar
```

将文件拷贝到对应目录:

```bash
cd aarch64/
cp -rdf usr/lib/* /usr/lib/
cp -rdf usr/qml/* /usr/qml/
cp usr/bin/gdbserver /usr/bin/
```

### 运行程序

将编译好的可执行程序 mainwindow 拷贝到设备上。

默认板子运行了 Wayland 桌面环境,按如下方式运行:

```bash
# 设置环境变量
export XDG_RUNTIME_DIR=/tmp/.xdg
# 运行
./mainwindow -platform wayland
```


    在开发板上完成以上运行环境的配置后,将主机上不能运行的mainwindow文件,拷贝到开发板的/tmp目录下,运行./mainwindow程序,如下


firefly@firefly:/tmp/build-mainwindow-qt_5_12_2_arrch64-Release$ ./mainwindow
./mainwindow: error while loading shared libraries: libmali.so.1: cannot open shared object file: No such file or directory


   用ldd指令查询结果如下:


firefly@firefly:/tmp/build-mainwindow-qt_5_12_2_arrch64-Release$ ldd mainwindow
        linux-vdso.so.1 (0x0000007f99b29000)
        libQt5Widgets.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Widgets.so.5 (0x0000007f99536000)
        libQt5Gui.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Gui.so.5 (0x0000007f990a6000)
        libQt5Core.so.5 => /usr/lib/aarch64-linux-gnu/libQt5Core.so.5 (0x0000007f98b46000)
        libatomic.so.1 => /usr/lib/aarch64-linux-gnu/libatomic.so.1 (0x0000007f98b2d000)
        librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000007f98b16000)
        libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007f98b01000)
        libmali.so.1 => not found
        libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f98ad5000)
        libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007f98941000)
        libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f98887000)
        libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f98863000)
        libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f9870a000)
        /lib/ld-linux-aarch64.so.1 (0x0000007f99afe000)
        libGLESv2.so.2 => /usr/lib/aarch64-linux-gnu/libGLESv2.so.2 (0x0000007f96d43000)
        libpng16.so.16 => /usr/lib/aarch64-linux-gnu/libpng16.so.16 (0x0000007f96d08000)
        libharfbuzz.so.0 => /usr/lib/aarch64-linux-gnu/libharfbuzz.so.0 (0x0000007f96c68000)
        libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000007f96c3b000)
        libicui18n.so.60 => /usr/lib/aarch64-linux-gnu/libicui18n.so.60 (0x0000007f9697d000)
        libicuuc.so.60 => /usr/lib/aarch64-linux-gnu/libicuuc.so.60 (0x0000007f967a9000)
        libdouble-conversion.so.1 => /usr/lib/aarch64-linux-gnu/libdouble-conversion.so.1 (0x0000007f96788000)
        libglib-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000007f96679000)
        libdrm.so.2 => /usr/lib/aarch64-linux-gnu/libdrm.so.2 (0x0000007f9665a000)
        libX11.so.6 => /usr/lib/aarch64-linux-gnu/libX11.so.6 (0x0000007f96531000)
        libX11-xcb.so.1 => /usr/lib/aarch64-linux-gnu/libX11-xcb.so.1 (0x0000007f9651f000)
        libxcb.so.1 => /usr/lib/aarch64-linux-gnu/libxcb.so.1 (0x0000007f964ef000)
        libxcb-dri2.so.0 => /usr/lib/aarch64-linux-gnu/libxcb-dri2.so.0 (0x0000007f964db000)
        libfreetype.so.6 => /usr/lib/aarch64-linux-gnu/libfreetype.so.6 (0x0000007f96432000)
        libgraphite2.so.3 => /usr/lib/aarch64-linux-gnu/libgraphite2.so.3 (0x0000007f96401000)
        libicudata.so.60 => /usr/lib/aarch64-linux-gnu/libicudata.so.60 (0x0000007f94a48000)
        libpcre.so.3 => /lib/aarch64-linux-gnu/libpcre.so.3 (0x0000007f949d6000)
        libXau.so.6 => /usr/lib/aarch64-linux-gnu/libXau.so.6 (0x0000007f949c3000)
        libXdmcp.so.6 => /usr/lib/aarch64-linux-gnu/libXdmcp.so.6 (0x0000007f949ae000)
        libbsd.so.0 => /lib/aarch64-linux-gnu/libbsd.so.0 (0x0000007f9498c000)


     缺少libmali.so.1文件!!!

     然后,在开发板上


firefly@firefly:/usr$ ls /usr/lib/libmali*
ls: cannot access '/usr/lib/libmali*': No such file or directory


     没有找到该文件。

     在主机上搜索该文件



   发现有libmali.so文件,长度为0,且不能拷贝



   拷贝出错!!





欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1