搭建 Linux 开发环境

更新时间:
2024-02-21
下载文档

搭建 Linux 开发环境

本节介绍 QVSOA Linux 开发环境的搭建方法。

安装 QVSOA 环境

QVSOA 开发需要依赖以下环境:

操作步骤

安装 Qt Creator

  1. 运行 Qt Creator 在线安装器。

  2. 在登录页,输入用户名和密码,并单击下一步,登录 Qt 账户。

  3. 在安装文件夹页选择安装 Qt 的目录,并单击下一步

  4. 在选择组件页选择安装 Qt 版本,建议选择 Qt 5.15.2,并单击下一步,根据提示完成安装。

安装 Qt SDK

  1. 安装 Qt SDK 前请确保以下工具已经正确安装。

    sudo apt install make
    sudo apt install g++
    sudo apt install gcc-aarch64-linux-gnu
    sudo apt install g++-aarch64-linux-gnu
    

    说明:
    建议安装工具的版本:

    • make :GNU Make 4.3 。
    • gcc :12.3.0 。
    • aarch64-linux-gun-gcc : 12.3.0 。
  2. 解压 Qt SDK 压缩包,根据目标平台修改 "qmake.confg" 文件并指定交叉编译工具链。此处以修改 aarch64 平台的 "qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf" 文件为例。

    #
    # qmake configuration for building with aarch64-linux-gnu-g++
    #
    
    MAKEFILE_GENERATOR      = UNIX
    CONFIG                 += incremental
    QMAKE_INCREMENTAL_STYLE = sublib
    
    include(../common/linux.conf)
    include(../common/gcc-base-unix.conf)
    include(../common/g++-unix.conf)
    
    # modifications to g++.conf
    QMAKE_CC                = /usr/bin/aarch64-linux-gnu-gcc
    QMAKE_CXX               = /usr/bin/aarch64-linux-gnu-g++
    QMAKE_LINK              = /usr/bin/aarch64-linux-gnu-g++
    QMAKE_LINK_SHLIB        = /usr/bin/aarch64-linux-gnu-g++
    
    # modifications to linux.conf
    QMAKE_AR                = /usr/bin/aarch64-linux-gnu-ar cqs
    QMAKE_OBJCOPY           = /usr/bin/aarch64-linux-gnu-objcopy
    QMAKE_NM                = /usr/bin/aarch64-linux-gnu-nm -P
    QMAKE_STRIP             = /usr/bin/aarch64-linux-gnu-strip
    load(qt_config)
    
    
  3. 添加脚本 "autoconfigure.sh" 用于生成 Makefile 文件。

    #!/bin/sh
    ./configure \
    -v \
    -prefix /opt/qt-5.15.2 \
    -release \
    -opensource \
    -no-accessibility \
    -make libs \
    -xplatform linux-aarch64-gnu-g++ \
    -optimized-qmake \
    -pch \
    -qt-zlib \
    -skip qtdeclarative \
    -no-opengl \
    -no-sse2 \
    -no-openssl \
    -no-glib \
    -no-pkg-config \
    -no-separate-debug-info
    
    

    说明:

    • -prefix:指定 Qt SDK 安装目录。
    • -xplatform:目标程序运行平台,参考目录 qtbase/mkspecs 列表。
  4. 在文件 "qtbase/src/corelib/global/qglobal.h" 中添加头文件 #include <limits> 解决编译报错。

    #ifndef QGLOBAL_H
    #define QGLOBAL_H
    
    #ifdef __cplusplus
    #  include <type_traits>
    #  include <cstddef>
    #  include <utility>
    #  include <limits>
    #endif
    
    
  5. 开始编译,直到编译完成。

    ./autoconfigure
    ./make
    sudo ./make install
    
    

安装 QVSOA SDK

  1. 运行 QVSOA SDK 安装程序,并在欢迎页单击下一步

  2. QVSOA 需要安装在 Qt SDK 目录中,选择 Qt SDK 目录,将自动追加 QVSOA 模块路径,并单击下一步,直到安装完成。

  3. QVSOA SDK 依赖 C 版本 VSOA ,请确保环境已经安装目标架构的 C 版本 VSOA SDK。

    ls /opt/qt-5.15.2/lib/ | grep libvsoa*
    libvsoa-client.so
    libvsoa-hpserv.so
    libvsoa-json.so
    libvsoa-parser.so
    libvsoa-position.so
    libvsoa-server.so
    
    

配置 qmake

  1. 打开 Qt Creator 在菜单栏中单击工具 > 外部 > 配置 > 构建套件( Kit )

  2. 在 Qt 版本页手动添加 qmake。

  3. 在编译器页手动添加 C 和 C++ 的编译器,输入编译器名称并指定编译器路径。

  4. 在构建套件( kit )页手动添加交叉编译设备,输入名称并选择编译器和 Qt 版本。

创建 QVSOA Qt 程序

  1. 打开 Qt Creator 在菜单栏中单击文件 > New Project > Qt Console Application,并单击选择,在弹出页中输入名称和创建路径,单击下一步

  2. 在构建系统页选择 qmake,并单击下一步

  3. 在构建套件( Kit )页选择 aarch64,并单击下一步

  4. 在工程文件 "example.pro" 中添加 QT += vsoa

    
    QT = core
    QT += vsoa
    
    CONFIG += c++17 cmdline
    
    # You can make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    SOURCES += \
            main.cpp
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    
  5. 在源码文件中添加 #include <QVsoa>

    
    #include <QCoreApplication>
    #include <QDebug>
    #include <QTimer>
    #include <QProcessEnvironment>
    
    #include <QVsoa>
    
    const QString MY_SERVER_PASSWD = "123456";
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        // Initialize server
        QVsoaServer server("{\"name\":\"axis_server\"}");
        if (server.isInvalid()) {
            qDebug() << "Can not create VSOA server!";
            return -1;
        }
    
        // If need password
        server.setPassword(MY_SERVER_PASSWD);
    
        int port       = 3002;
        int auto_port  = QProcessEnvironment::systemEnvironment().value("VSOA_AUTO_PORT", "-1").toInt();
        if (auto_port != -1) {
            port = auto_port;
        }
        // Start server
        if (!server.start(QVsoaSocketAddress(AF_INET, "0.0.0.0", port))) {
            qDebug() << "Can not start VSOA server!";
            return -1;
        }
        qDebug() << "Started VSOA server.";
    
        static int roll  = 1;
        static int pitch = 1;
        static int yaw   = 1;
        QTimer timer;
        QObject::connect(&timer, &QTimer::timeout, [&] {
            if (server.isSubscribed("/axis")) {
                // Publish /axis
                server.publish(
                    "/axis",
                    QVsoaPayload(QString::asprintf("{\"roll\": %d, \"pitch\": %d, \"yaw\": %d}", roll++, pitch++, yaw++),
                                {}));
            }
        });
        timer.start(1000);
    
        return a.exec();
    }
    
    
  6. 选中项目文件夹,右键单击构建,完成程序编译。

文档内容是否对您有所帮助?
有帮助
没帮助