Ubuntu + VSCODE +aarch64 +qt +qmake +clangd

张开发
2026/4/16 15:08:18 15 分钟阅读

分享文章

Ubuntu + VSCODE +aarch64 +qt +qmake +clangd
MX6 工具链 arm-linux-generic-elf-32bit名称imx6-5.12.10sysroot/opt/fsl-imx-fb/qt5/sysroots/cortexa9hf-neon-poky-linux-gnueabi编译器GCC-imx6 /opt/fsl-imx-fb/qt5/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gccG-imx6 /opt/fsl-imx-fb/qt5/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g调试器## QTQt %{Qt:Version} (qt5.12.10) /opt/fsl-imx-fb/qt5.12.10/bin/qmakeQt %{Qt:Version} for Android armv7 opt/fsl-imx-fb/Qt5.9.5/5.9.5/android_armv7/bin/qmakeQt %{Qt:Version} GCC 64bit /opt/fsl-imx-fb/Qt5.9.5/5.9.5/gcc_64/bin/qmake## Ubuntu 20.041. SDK 工具链的安装位置 tar -zxf t527-sdk.tar.gz -C /optls /opt/t527-sdk/ aarch64-buildroot-linux-gnu doc include lib64 man opt sbin usr bin etc lib libexec mkspecs relocate-sdk.sh shareqmake 的安装位置/opt/t527-sdk/bin/qmakesysroot : --sysroot/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot2. 配置 qmake 编译环境apt install bear : 用于生成 clangd 使用的 compile_commands.json#!/bin/bash # Compile mkdir build cd build /opt/t527-sdk/bin/qmake ../L9128H_3067.pro bear make -j $(nproc) # generates compile_commands.json3. vscode 安装clangd 并在工程目录下设置 .clangdCompileFlags: Add: # 交叉编译器系统目录 - --sysroot/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot # Qt 头文件路径 - -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5 - -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtCore - -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtGui - -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtWidgets - -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtNetwork - -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtQml - -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtQuick # Qt 宏定义 - -DQT_CORE_LIB - -DQT_GUI_LIB - -DQT_WIDGETS_LIB - -DQT_NETWORK_LIB - -DQT_QML_LIB - -DQT_QUICK_LIB # 移除主机系统的 Qt 路径避免冲突 Remove: - -I/usr/include/x86_64-linux-gnu/qt5 - -I/usr/include/qt5在 .vscode/settings 增加 clangd 参数{ clangd.arguments: [ // 在后台自动分析文件基于complie_commands) --background-index, // 标记compelie_commands.json文件的目录位置 --compile-commands-dirbuild, // 同时开启的任务数量 -j12, // clang-tidy功能 --clang-tidy, // 全局补全会自动补充头文件 --all-scopes-completion, // 详细补全 --completion-styledetailed, // 补充头文件 --header-insertioniwyu, // pch优化的位置 --pch-storagedisk, ] }.vscode/c_cpp_properties.json{ configurations: [ { name: T527-ARM64, includePath: [ ${workspaceFolder}/**, /opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include, /opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5, /opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtCore, /opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtGui, /opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtWidgets ], defines: [ QT_CORE_LIB, QT_GUI_LIB, QT_WIDGETS_LIB ], compilerPath: /opt/t527-sdk/bin/aarch64-none-linux-gnu-g, cStandard: c11, cppStandard: c17, intelliSenseMode: gcc-x64 } ], version: 4 }.vscode/launch.json{ version: 0.2.0, configurations: [ { name: ARM64 Debug (T527), type: cppvsdbg, request: launch, program: ${workspaceFolder}/app_t527, args: [], stopAtEntry: false, cwd: ${workspaceFolder}, environment: [], externalConsole: false, MIMode: gdb, miDebuggerPath: /usr/bin/gdb-multiarch, setupCommands: [ { description: Enable pretty-printing, text: -enable-pretty-printing, ignoreFailures: true } ] } ] }.vscode/task.json{ version: 2.0.0, tasks: [ { label: ARM64 Build (T527-SDK), type: shell, command: /opt/t527-sdk/bin/aarch64-none-linux-gnu-g, args: [ -g, -stdc17, --sysroot/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot, -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5, -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtCore, -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtGui, -I/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/include/qt5/QtWidgets, -DQT_CORE_LIB, -DQT_GUI_LIB, -DQT_WIDGETS_LIB, ${workspaceFolder}/main.cpp, -o, ${workspaceFolder}/app_t527, -L/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot/usr/lib, -lQt5Core, -lQt5Gui, -lQt5Widgets ], group: { kind: build, isDefault: true }, problemMatcher: [$gcc], detail: T527 ARM64 Qt 编译 } ] }

更多文章