• 鲲鹏devkit编译调试工具——《sudoku》作业解析


    《sudoku》作业解析

    本次实验以sudoku项目为例介绍鲲鹏编译调试插件的基本使用方法
    本次实验的步骤主要为

    • 获取源码
    • 安装鲲鹏编译调试插件
    • 服务器配置
    • 进行代码同步配置
    • 配置测试任务
    • 进行编译调试
      接下来我们先获取本次实验所需要的源码

    获取源码

    sudoku项目已经上传到github使用以下命令克隆到本地的
    git clone https://github.com/mayerui/sudoku.git
    在这里插入图片描述
    克隆完成后文件的目录如下
    使用vscode打开

    安装鲲鹏编译调试插件

    使用vscode打开sudoku项目后在插件商店搜寻鲲鹏编译调试插件下载并打开
    进行编译调试插件的服务器配置
    在这里插入图片描述
    打开插件后按照提示配置服务器,本次的项目直接我们选择编译调试就好
    在这里插入图片描述
    开始进行服务器的配置
    在这里插入图片描述
    在配置服务器这里,根据要求填写自己的服务器的ip(是公网ip)
    这里如果没有进行修改的话默认的ssh端口都是22
    ssh用户名也是管理员权限root
    工作空间这里需要在服务器上建立自己的工作空间,这里我在/home下建立了一个workspace工作目录,这个根据自己的习惯进行修改
    在这里插入图片描述
    方便后面的代码同步操作我们需要与服务器建立互信,上传私钥和公钥
    本地生成的代码如下,进入cmd输入如下命令
    ssh-keygen -b 3072 -t rsa -f D:\tmp
    这个命令会在d盘上生成我们需要的公钥和私钥
    在这里插入图片描述
    tmp为私钥
    tmp.pub为公钥
    开始配置
    在这里插入图片描述
    配置完成后可以选择目标服务器进行登录
    在这里插入图片描述
    选择将sudoku项目同步到我们的远端服务器的工作空间中
    在这里插入图片描述
    同步完成后在远端服务器的工作空间中可以弹道sudo项目的代码
    到这里鲲鹏编译调试的前期的准备工作已经完成
    接下来,开始进行sudoku项目的编译调试

    使用鲲鹏编译调试插件

    首先对sudoku项目进行简单的了解
    打开README.md
    在这里插入图片描述
    通过README.md快速了解下sudoku项目
    进入到main函数当中

    #if _TEST_
        test_case1();
        getchar();
    #else
    
    • 1
    • 2
    • 3
    • 4

    这样的一段代码可以开始给我们获取一些测试用例,默认的_TEST_为0

    void CScene::generate()
    {
        // XXX: pseudo random
        static char map_pattern[10][10] = {
            "ighcabfde",
            "cabfdeigh",
            "fdeighcab",
            "ghiabcdef",
            "abcdefghi",
            "defghiabc",
            "higbcaefd",
            "bcaefdhig",
            "efdhigbca"};
    
        std::vector v = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'};
    
        // 产生字母到数字的随机映射
        std::unordered_map hash_map;
        for (int i = 1; i <= 9; ++i)
        {
            int r = random(0, v.size() - 1);
            hash_map[v[r]] = i;
            v.erase(v.begin() + r);
        }
    
        // 填入场景
        for (int row = 0; row < 9; ++row)
        {
            for (int col = 0; col < 9; ++col)
            {
                point_t point = {row, col};
                char key = map_pattern[row][col];
                setValue(point, hash_map[key]);
            }
        }
    
        assert(isComplete());
    
        return;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    在scene.cpp文件中的这个方法就是棋盘的初始化的方法
    大概了解了整个项目后我们按照REANDE.md开始进行项目的编译
    回到插件,开始创建编译命令
    在这里插入图片描述
    编译命令为
    sh build.sh
    在这里插入图片描述
    开始创建编译命令
    在这里插入图片描述
    刚开始,这里我们选择同步并编译
    在这里插入图片描述
    检查服务器是否已经存在cmake
    使用以下命令检查
    cmake --version
    在这里插入图片描述
    可以发现这里服务器并没有按安装cmake需要进行按照,使用以下命令进行安装
    yum install cmake
    在这里插入图片描述
    再次查看版本号

    在这里插入图片描述
    这里是出现了问题的,因为这里的cmake版本只有2.8我们需要的是3.12版本以上才可以
    所以需要升级cmake版本
    1、依赖环境安装
    yum -y install libyaml libyaml-devel python-setuptools libcurl-devel python-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel libpcap-dev*

    2、下载cmake
    wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

    3、解压、编译安装
    tar xzvf cmake-3.5.2.tar.gz
    cd cmake-3.5.2
    ./bootstrap
    make -j 8
    make install

    4、验证是否安装完成
    cmake --version
    安装完成cmake后开始执行远程编译任务
    在这里插入图片描述
    编译成功,进入到bin目录下启动sudo
    ./sudo
    在这里插入图片描述
    编译启动正常

    调试功能

    返回vscode配置代码自动上传功能
    在这里插入图片描述
    返回到主函数这里对代码进行如下修改
    在这里插入图片描述
    编写测试用例

    在这里插入图片描述
    这里是我的程序地址
    这里根据个人情况修改测试用例
    编写完成后开始获取测试用例
    在这里插入图片描述
    在这里插入图片描述
    最后一步进行断点设置,开始进行调试
    在这里插入图片描述
    到这里编译调试已经完成!

  • 相关阅读:
    MyBatis-plus组件学习
    【经典】持久更新编译器报错及操作问题(解决方法)
    【科研工具的使用】A
    Java线程任务 创建一个单独的任务线程并提交到线程池中执行 案例
    C - Bricks and Bags,E - Hanging Hearts,H-Leonard的子序列_树状数组优化dp,B - Hash 河南省赛
    Codeforces Round #820 (Div. 3)A. Two Elevators
    使用 Tesseract 和 OpenCV 基于深度学习的 OCR 文本识别
    尚硅谷SSM整合之mybatis学习打卡
    池州市的城市环境融合:OLED透明拼接屏展现自然与现代的完美结合
    OpenCV
  • 原文地址:https://blog.csdn.net/m0_63694520/article/details/128000600