我已經從這個頁面安裝了 Debian Bullseye:https : //raspi.debian.net/daily-images/
在 Raspberry Pi 4 機器上,并按照以下指南準備所需的庫和包:
https://www.interelectronix.com/qt-515-cross-compilation-raspberry-compute-module-4-ubuntu-20-lts.html
https://github.com/abhiTronix/raspberry-pi-cross-compilers/blob/master/QT_build_instructions.md
這是我正在使用的編譯器:https : //snapshots.linaro.org/gnu-toolchain/12.0-2021.10-1/aarch64-linux-gnu/gcc-linaro-12.0.0-2021.10-x86_64_aarch64-linux-gnu .tar.xz
從這個頁面:https : //snapshots.linaro.org/gnu-toolchain/12.0-2021.10-1/aarch64-linux-gnu/
問題描述
當我運行 ./configure... 經過一些處理后,編譯器會拋出一個錯誤:
aarch64-linux-gnu-g :錯誤:無法識別的命令列選項
-mfloat-abi=softfp
同時,Linaro 或官方 ARM 編譯器不支持 VFP、FPU 等,因此我不得不更改 qmake.conf 以嘗試從編譯器標志中洗掉該命令列選項。
QMAKE_CFLAGS -= -mfloat-abi=softfp
QMAKE_CFLAGS_RELEASE -= -mfloat-abi=softfp
QMAKE_CXXFLAGS -= -mfloat-abi=softfp
QMAKE_CXXFLAGS_RELEASE -= -mfloat-abi=softfp
我已經嘗試了以下列出的所有解決方案:Qmake:如何在不更改 qmake.conf 的情況下洗掉某個專案的編譯器標志?
但仍然沒有運氣!那個命令列又神奇地出現了!
你有沒有運氣編譯 aarch64 ?
我該如何解決這個問題?
更新
我的配置命令:
~/Qt/5.15.2/Src/configure -release -device linux-rasp-pi4-v3d-g \
-device-option CROSS_COMPILE=~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/tools/gcc-linaro-12.0.0-2021.10-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- \
-sysroot ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot -prefix /usr/local/qt5.15.2 \
-extprefix ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/qt5.15.2 \
-opensource -confirm-license -skip qtscript -skip qtwayland -skip qtwebengine \
-nomake tests -make libs -pkg-config -no-use-gold-linker -v -recheck \
-L~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot/usr/lib/aarch64-linux-gnu \
-I~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot/usr/include/aarch64-linux-gnu
我在 linux-rasp-pi4-v3d-g 檔案夾中編輯了 qmake.conf:
include(../common/linux_device_pre.conf)
#QMAKE_LIBS_EGL = -lEGL
#QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -lEGL
#QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72 -mfpu=crypto-neon-fp-armv8
QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
#DISTRO_OPTS = hard-float
DISTRO_OPTS = deb-multi-arch
#EGLFS_DEVICE_INTEGRATION = eglfs_kms
include(../common/linux_arm_device_post.conf)
QMAKE_CFLAGS = $$replace(QMAKE_CFLAGS, "-mfloat-abi=softfp", "")
QMAKE_CFLAGS_RELEASE = $$replace(QMAKE_CFLAGS_RELEASE, "-mfloat-abi=softfp", "")
QMAKE_CXXFLAGS = $$replace(QMAKE_CXXFLAGS, "-mfloat-abi=softfp", "")
QMAKE_CXXFLAGS_RELEASE = $$replace(QMAKE_CXXFLAGS_RELEASE, "-mfloat-abi=softfp", "")
COMPILER_FLAGS = $$replace(COMPILER_FLAGS, "-mfloat-abi=softfp", "")
load(qt_config)
uj5u.com熱心網友回復:
通過編輯 qmake.conf 解決了這個問題
使用linux_device_post替代linux_arm_device_post
include(../common/linux_device_pre.conf)
QT_QPA_DEFAULT_PLATFORM =
QMAKE_CFLAGS = -march=armv8-a -mtune=cortex-a72
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
DISTRO_OPTS = deb-multi-arch
include(../common/linux_device_post.conf)
load(qt_config)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/313876.html
