Ubuntu + VSCODE +aarch64 +qt +qmake +clangd

MX6 工具链 arm-linux-generic-elf-32bit

名称:imx6-5.12.10

sysroot:/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-gcc

G++-imx6: /opt/fsl-imx-fb/qt5/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++

调试器:

QT

Qt %{Qt:Version} (qt5.12.10) /opt/fsl-imx-fb/qt5.12.10/bin/qmake

Qt %{Qt:Version} for Android armv7 opt/fsl-imx-fb/Qt5.9.5/5.9.5/android_armv7/bin/qmake

Qt %{Qt:Version} GCC 64bit /opt/fsl-imx-fb/Qt5.9.5/5.9.5/gcc_64/bin/qmake

## Ubuntu 20.04

  1. SDK 工具链的安装位置 tar -zxf t527-sdk.tar.gz -C /opt

    ls /opt/t527-sdk/
    aarch64-buildroot-linux-gnu doc include lib64 man opt sbin usr
    bin etc lib libexec mkspecs relocate-sdk.sh share

qmake 的安装位置**/opt/t527-sdk/bin/qmake**

sysroot : --sysroot=/opt/t527-sdk/aarch64-buildroot-linux-gnu/sysroot

  1. 配置 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.json
  1. vscode 安装clangd , 并在工程目录下设置 .clangd

    CompileFlags:
    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-dir=build",
    // 同时开启的任务数量
    "-j=12",
    // clang-tidy功能
    "--clang-tidy",
    // 全局补全(会自动补充头文件)
    "--all-scopes-completion",
    // 详细补全
    "--completion-style=detailed",
    // 补充头文件
    "--header-insertion=iwyu",
    // pch优化的位置
    "--pch-storage=disk",
    ]
}

.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": "c++17",
            "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",
                "-std=c++17",
                "--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 编译"
        }
    ]
}
相关推荐
学Linux的语莫2 小时前
Linux环境中anaconda 的安装与环境配置
linux·运维·服务器
回忆2012初秋2 小时前
C# 射线算法:判断GPS点是否在车辆工作区域内
linux·算法·c#
弹简特3 小时前
【Linux命令饲养指南】Ubuntu 安装 MySQL【AI辅助实现】
linux·mysql·ubuntu
ITKEY_3 小时前
linux edge 强制使用x11运行
linux·运维·edge
鹏大师运维3 小时前
重磅更新!统信桌面操作系统V25专业版安装使用教程
linux·安装教程·国产化·统信uos·专业版·桌面操作系统·v25
zjneymar3 小时前
苍穹外卖中一些知识点和问题
java·linux·服务器
重生的黑客3 小时前
Linux:Makefile 自动化构建与进度条实战
linux·运维·自动化
发发就是发3 小时前
资源管理:I/O端口与内存映射
linux·服务器·驱动开发·单片机·嵌入式硬件·fpga开发
坤坤藤椒牛肉面3 小时前
linux中断:顶半部与底半部
linux·运维·服务器