【发布时间】:2023-03-10 03:40:02
【问题描述】:
我和我的朋友正在开发由 Raspberry PI B+ 和一个小触摸屏驱动的便携式互联网收音机。我正在使用我为 PI 的 ARMv6 CPU 交叉编译的 Qt-5.9 开发接口。我的界面使用的是 QML,所以当我启动我的应用程序时,一切正常,但 QML 动画滞后。
因此,控制台告诉我没有启用 QML JIT (JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform.),所以我查看了有关 V4 引擎的给定页面,经过大约两周的尝试,我发现问题是缺少使用 V4 所需的 Thumb-1 指令集,以及在 Pi 上运行的 Raspbian Jessie 的 HardFP 配置。所以现在我认为如果我让交叉编译器使用 Thumb-1 集,它会起作用。我尝试了很多,最后我遇到了两个问题。
- 当我在命令行中使用
-mthumb标志时,我收到此错误:sorry, unimplemented: Thumb-1 hard-float VFP ABI。我需要 Thumb-1,我无法更改整个操作系统的 Hard-Float 实现,并且没有适合 ARMv6 的编译器标志来禁用 VFP。 - 当我在命令行中使用
-mthumb-interwork标志时,编译工作正常,但可执行文件不会因为ABI 设置而改变(https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/ARM-Options.html#ARM-Options) (-mthumb-interwork: ... In AAPCS (the ABI) configurations this option is meaningless.)。我尝试了所有可能的 ABI,但没有一个能正常运行并编译出正在运行的程序。
我也读过一些关于 RPi 的补丁,但它们很久以前就被包含在上游 Qt 中了。
我修改了编译器参数以进行尝试(文件:QT/qtbase/mkspecs/devices/linux-rasp-pi-g++/qmake.conf):
QMAKE_CFLAGS += \
-mthumb \
-mfpu=vfp \
-mtune=arm1176jzf-s \
-march=armv6zk \
-mabi=aapcs-linux
(这个配置不行)
我使用以下参数配置了 QT:
./configure -release -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -skip webengine -make libs -no-icu -tslib -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -v
我希望你们在解决这些问题方面比我聪明,因为我认为我已尽一切可能使 JIT 正常工作。
如果这个问题无法解决,那就太糟糕了,因为 Qt-QML 是一个非常适合 PI 等嵌入式设备的 GUI 解决方案,并且八个 RP 中有六个正在运行这个旧的 ARMv6 CPU。
提前谢谢你
【问题讨论】:
标签: c++ qt raspberry-pi qml jit