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 编译"
        }
    ]
}
相关推荐
艾莉丝努力练剑6 小时前
【Linux网络】Linux 网络编程:传输层协议TCP(三)
linux·运维·服务器·网络·tcp/ip·http
keyipatience6 小时前
21,22 (半)深入理解Linux重定向与缓冲区机制
linux·运维·服务器
fengyehongWorld6 小时前
Linux command 命令
linux
坤昱6 小时前
cfs调度类深入解刨——最新内核细节分析3
linux·linux内核·deadline·cfs调度·eevdf·kernel 7.1·最新内核调度
2301_803538956 小时前
CentOS版本差异详解和系统信息查看方法
linux·运维·centos
灰灰老师6 小时前
Docker部署Tomcat9
java·linux·docker·tomcat
Cx330❀6 小时前
【Qt 核心机制篇】深度解析 Qt 信号与槽(Signals & Slots)机制:从底层原理、实战演练到 Lambda 进阶
linux·开发语言·c++·人工智能·qt·ubuntu
学习,学习,在学习6 小时前
Modbus TCP同步通信方式实现异步级效率
网络·c++·qt·网络协议·tcp/ip·qt5
田里的水稻6 小时前
OE_临时配置网络_linux系统终端命令行ip setting
linux·网络·tcp/ip
Cx330❀6 小时前
【Linux网络】从零构建高性能UDP服务器:从Echo到英译汉业务级实现
大数据·linux·服务器·开发语言·网络·c++·udp