QGC 环境搭建踩坑记录
文章目录
- 🧩 问题一:链接时报 relocation 错误
- ❗ 错误信息
- ✅解决办法: 使用 21.3 的 ndk
- 🧩 问题二:Qt 项目 Kit 无法解析
- ❗ 错误信息
- ✅ 解决办法
- 🧩问题三:程序运行时报 “无法定位程序输入点”
- ❗ 错误截图
- 🕵️♂️ 问题分析
- ✅ 解决方法
- 💡 其他经验分享
- 📥 Gradle 下载过慢
在Qt 5.12.6. 与 Qt 5.15.2 环境下开发 QGC 应用时,遇到了不少的,这里做一下记录,供有相同需求的同学参考。
🧩 问题一:链接时报 relocation 错误
环境:qt 5.15.2 Android 下
❗ 错误信息
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'ff_cos_32'; recompile with -fPIC
>>> defined in .../gstreamer-1.0-android-universal-1.18.5/arm64/lib/libavcodec.a(fft_float.o)
>>> referenced by asm.S:491 (.../libavutil/aarch64/asm.S:491)
>>> fft_neon.o:(fft32_neon) in archive```shell
ld: error: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used against symbol 'ff_cos_32'; recompile with -fPIC
✅解决办法: 使用 21.3 的 ndk
将 NDK 版本更换为 21.3,重新编译即可。
📝 使用较新版本的 NDK(如 r23 或更高)可能不兼容一些预编译的 .a 库(如 GStreamer、FFmpeg),建议回退到 21.3 版本进行兼容性调试。
示意图:
🧩 问题二:Qt 项目 Kit 无法解析
环境:qt 5.15.2 或者 qt 5.12.6
❗ 错误信息
Cannot parse project "qgroundcontrol": No kit selected.
Cannot parse project "qgroundcontrol": The currently selected kit "Desktop Qt 5.12.6 MSVC2017 64bit" does not have a valid Qt.
✅ 解决办法
删除 Qt Creator 的配置缓存
C:\Users\用户名\AppData\Roaming\QtProject
这个缓存文件有时会导致 Kit 配置无法识别或 Qt Creator 启动缓慢。
还有可能是拷贝过来的程序,可直接 git clone 解决,不要使用拷贝的程序 —— 这都是踩过的坑
🧩问题三:程序运行时报 “无法定位程序输入点”
环境: QT 5.12.6
❗ 错误截图
🕵️♂️ 问题分析
编译生成的 .exe 缺少 Qt 动态库(如 Qt5Locationd.dll),并且复制的 DLL 是 Qt 5.15.2 的,而当前项目用的是 Qt 5.12.6,导致符号无法匹配。
从 .pri 文件中可以看到使用了如下指令:
QMAKE_POST_LINK += $$escape_expand(\\n) $$QT_BIN_DIR\\windeployqt --qmldir=$${SOURCE_DIR}\\src $${DEPLOY_TARGET}
实际执行命令也没错:
C:/Qt/Qt5.12.6/5.12.6/msvc2017_64/bin\windeployqt --qmldir=E:/21_GCS/src staging\scGcs.exe
但仍然出现错误。
✅ 解决方法
在 windeployqt 命令中添加 --no-patchqt 参数,避免其尝试修改 Qt DLL 内部路径,保持原始状态即可。
QMAKE_POST_LINK += $$escape_expand(\\n) $$QT_BIN_DIR\\windeployqt --no-patchqt --qmldir=$${SOURCE_DIR}\\src $${DEPLOY_TARGET}
💡 含义:跳过 patch DLL 操作,windeployqt 只负责复制文件,不修改路径信息。
💡 其他经验分享
📥 Gradle 下载过慢
下载 gradle 文件替换,节省等待时间: