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

2.  配置 qmake 编译环境

 apt install bear  :  用于生成 clangd 使用的 compile_commands.json

#!/bin/sh

mkdir -p build && cd build
/opt/t527-sdk/bin/qmake ../xxx.pro
# /opt/fsl-imx-fb/qt5.12.10/bin/qmake ../xxx.pro
#  只在全量编译的时候使用 bear !!! 增加append  
bear --append   make -j 4 #$(nproc) # generates compile_commands.json

# make -j 4
# ssh root@192.168.1.62 'source /etc/profile;killall xxxxx'
# scp MilanInter root@192.168.1.62:/home/root/test/
# ssh root@192.168.1.62 'source /etc/profile;sh start.sh'

3. vscode 安装clangd , 并在工程目录下设置 .clangd

解决 AST ERROR

CompileFlags:       
  Remove: -mabi=lp64
 

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 编译"
        }
    ]
}

更多推荐