|
关于ROC-RK3399-PRO主板上运行用QT5.12.2开发的应用程序缺少libmali.so.1库文件的问题
发表于 2021-5-18 15:40:04
浏览:6361
|
回复:0
打印
只看该作者
[复制链接]
楼主
在微机上安装了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,且不能拷贝
拷贝出错!!
|
|