当前位置: 首页 > news >正文

ESP-C3入门20. CentOS开发环境及Jenkins流水线

一、准备环境

  • CentOS8
  • 已经正常安装Jenkins

二、升级 cmake

cmake 升到 3.16以上。

cmake --version
# 安装 g++
sudo yum install gcc-c++
export CXX=g++# 安装 CMake 的依赖项
sudo yum install -y openssl-devel# 下载 CMake 源码并进行编译安装
wget https://github.com/Kitware/CMake/releases/download/v3.21.1/cmake-3.21.1.tar.gz
tar -zxvf cmake-3.21.1.tar.gz
cd cmake-3.21.1
./bootstrap
make
sudo make install

三、升级 bash

bash要升到 4 以上。

cd /opt
wget -v http://ftp.gnu.org/gnu/bash/bash-5.1.16.tar.gz
tar zxvf bash-5.1.16.tar.gz
cd bash-5.1.16/
./configuremake install
mv /bin/bash /bin/bash.bak && ln -s /usr/local/bin/bash /bin/bash

四、安装IDF编译工具链

1. 替换源

git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
cd esp-gitee-tools/
./jihu-mirror.sh  set
# 依赖准备
sudo yum -y update && sudo yum install git wget flex bison gperf  cmake ninja-build ccache dfu-util libusbx

在这里遇到个问题,提示:
Public key for jenkins-2.401.2-1.1.noarch.rpm is not installed
意思是系统中缺少 Jenkins 软件包的公钥,因此无法验证软件包的真实性。
执行下面操作:

cd /opt
wget -O jenkins.rpm https://pkg.jenkins.io/redhat-stable/jenkins-2.401.2-1.1.noarch.rpm --no-check-certificate
sudo yum localinstall jenkins.rpm

2. 安装python3.8

ESP-IDF 需要python3.7以上版本,如果yum仓库版本比较低,则需要手动下载安装。

cd /opt
wget https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tgz
tar -zxvf Python-3.8.16.tgz
ls
cd Python-3.8.16./configure --prefix=/opt/Python-3.8.16 --with-openssl=/usr/local/openssl
make 
make install
rm -rf /usr/bin/pip3 /usr/bin/python3
ln -s /usr/local/bin/pip3.8  /usr/bin/pip3
ln -s /usr/local/bin/python3.8  /usr/bin/python3

2. 获取 ESP-IDF

mkdir -p /opt/esp
cd /opt/esp
git clone -b v5.1 --recursive https://github.com/espressif/esp-idf.git

3. 安装 ESP-IDF

cd /opt/esp/esp-idf
# 提高下载速度
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh esp32,esp32s2,esp32c2,esp32c3
. ./export.sh

五、流水线设置

Jenkinsfile脚本 :

pipeline{agent anyenvironment {IDF_PATH = "/opt/esp/esp-idf" // 替换为您的 ESP-IDF 安装路径IDF_PYTHON_ENV = "/usr/bin/python3" // 替换为您的 Python 虚拟环境路径(可选)}parameters{choice(name: 'ENV', choices: 'intranet\ntest\n', description: '部署环境')choice(name: 'CHIPSET', choices: 'esp32c3\nesp32c2\n', description: '芯片')choice(name: 'VERSION_TYPE', choices: '最新版本\n指定版本\n', description: '版本指定方式')string(name: 'VERSION', description: '版本', defaultValue: '1')choice(name: 'LOG', choices: '打印\n屏蔽\n', description: '是否打印日志')}stages{stage('Build') {steps {echo 'Building'script {echo "start"sh "/usr/local/bin/python3 /opt/esp/esp-idf/tools/idf_tools.py install"sh "cd $IDF_PATH && . /opt/esp/esp-idf/export.sh" // 激活 ESP-IDF 环境和 Python 虚拟环境if (params.VERSION_TYPE == '最新版本') {// 从 constants.h 文件中获取 MODULE_SOFT_VERSION 的值def versionHex = sh(returnStdout: true,script: "cat main/config/include/constants.h | grep 'MODULE_SOFT_VERSION' | awk '{print \$3}'").trim()// 将十六进制转换为十进制def versionDecimal = versionHex.toLong(16)// 赋值给 VERSIONparams.VERSION = versionDecimal.toString()}sh "idf.py set-target ${params.CHIPSET}"sh "idf.py build" // 在工作目录下运行 idf.py build 命令进行编译String calcPath = '/www/server/tomcat/webapps/upload';// 上传到指定路径sh "scp ${env.WORKSPACE}/build/whr_wifi_esp32.bin root@${host['test']}:${calcPath}/${params.VERSION}"sh "scp ${env.WORKSPACE}/build/partition_table/partition-table.bin root@${host['test']}:${calcPath}/${params.VERSION}"// 这里可以根据需要打印下载地址echo "烧写命令"echo "/opt/esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip ${params.CHIPSET}  write_flash --flash_mode dio --flash_size 4MB --flash_freq 60m 0x0 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/project.bin"echo "或运行 'idf.py -p (PORT) flash'"}}}}
}

六、问题处理

1. 找不到 GLIBCXX_3.4.20

    Run Build Command(s):/usr/bin/ninja-build cmTC_a92c3 && [1/2] Building CXX object CMakeFiles/cmTC_a92c3.dir/testCXXCompiler.cxx.objFAILED: CMakeFiles/cmTC_a92c3.dir/testCXXCompiler.cxx.obj /root/.espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/riscv32-esp-elf-g++   -march=rv32imc_zicsr_zifencei -o CMakeFiles/cmTC_a92c3.dir/testCXXCompiler.cxx.obj -c /var/lib/jenkins/workspace/whr-wifi-esp32/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx/root/.espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/../libexec/gcc/riscv32-esp-elf/12.2.0/cc1plus: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/.espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/../libexec/gcc/riscv32-esp-elf/12.2.0/cc1plus)

执行:

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

在这里插入图片描述
拷一个 libstdc++.so.6.0.25到 /usr/lib64,执行:

ln -s libstdc++.so.6.0.25 libstdc++.so.6
ls -l libstdc++.so.6
strings libstdc++.so.6 | grep GLIBC

2. 提示"/lib64/libc.so.6: version GLIBC_2.18' not found (required by /lib64/libstdc++.so.6)"

curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxf glibc-2.18.tar.gz 
cd glibc-2.18/
mkdir build
cd build/
../configure --prefix=/usr
make -j2
make install

相关文章:

ESP-C3入门20. CentOS开发环境及Jenkins流水线

一、准备环境 CentOS8已经正常安装Jenkins 二、升级 cmake cmake 升到 3.16以上。 cmake --version # 安装 g sudo yum install gcc-c export CXXg# 安装 CMake 的依赖项 sudo yum install -y openssl-devel# 下载 CMake 源码并进行编译安装 wget https://github.com/Kitwa…...

服务器被爬虫恶意攻击怎么办?

在有预算的情况可以采购第三方服务防火墙,没钱就使用开源的WAF进行防护。 # WAF防火墙的基本防护原理 WAF(Web 应用防火墙)可以使用多种技术来防止恶意爬虫攻击,例如: 1. 黑名单:WAF 可以使用黑名单技术来…...

JavaScript正则表达式之座机号/手机号验证校验规则

引用:https://www.bilibili.com/read/cv18300539/ 本文对利用正则表达式对手机号码进行了验证 支持格式: 座机 :xxx-xxxxxxxx、xxxxxxxxxxxx …座机区号的横杠可有可无 手机:xxxxxxxxxxx JavaScript: var: checkPhone (rule,…...

黑客学习手册(自学网络安全)

一、首先,什么是黑客? 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手,现阶段黑客所需要掌握的远远不止这些。 二、为什么要学习黑客技术? 其实,网络信息空间安全已经成为海陆空之外的第四大战场,除了国…...

获取非叶子节点的grad(retain_grad()、hook)【为了解决grad值是None的问题】

在调试过程中, 有时候我们需要对中间变量梯度进行监控, 以确保网络的有效性, 这个时候我们需要打印出非叶节点的梯度, 为了实现这个目的, 我们可以通过两种手段进行, 分别是: retain_grad()hook 不过我感觉“hook”比“retain_grad()”要麻烦.....,所以我感觉还是…...

JMeter(八):响应断言详解

响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,…...

【网络编程】IO复用的应用一:非阻塞connect

在connect连接中,若socket以非阻塞的方式进行连接,则系统内设置的TCP三次握手超时时间为0,所以它不会等待TCP三次握手完成,直接返回,错误为EINPROGRESS。   所以,我们可以通过判断connect时返回的错误码是…...

Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Spring注解开发 一、注解开发定义Bean二、纯注解开发Bean三…...

C#设计模式之---原型模式

原型模式(Prototype Pattern) 原型模式(Prototype Pattern) 是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种创建型设计模式。也就是用一个已经创建的实例作为原型,通过…...

STM32入门学习之外部中断

1.STM32的IO口可以作为外部中断输入口。本文通过按键按下作为外部中断的输入,点亮LED灯。在STM32的19个外部中断中,0-15为外部IO口的中断输入口。STM32的引脚分别对应着0-15的外部中断线。比如,外部中断线0对应着GPIOA.0-GPIOG.0,…...

Jenkins 配置maven和jdk

前提:服务器已经安装maven和jdk 一、在Jenkins中添加全局变量 系统管理–>系统配置–>全局属性–>环境变量 添加三个全局变量 JAVA_HOME、MAVEN_HOME、PATH 二、配置maven 系统管理–>全局工具配置–>maven–>新增 新增配置 三、配置JDK 在系统管…...

Leetcode | Binary search | 22. 74. 162. 33. 34. 153.

22. Generate Parentheses 要意识到只要还有左括号,就可以放到path里。只要右括号数量小于左括号,也可以放进去。就是valid的组合。recurse两次 74. Search a 2D Matrix 看成sorted list就好。直接用m*n表示最后一位的index,并且每次只需要 …...

生命在于折腾——面试问题汇总

这里面的问题都是我参加面试时候遇到的问题,大家就这样看吧。 一、个人情况 1、自我介绍 2、为什么离开上一家公司 3、有没有参加过HVV 4、介绍一下上家公司的项目 5、小程序和公众号渗透测试做过么 6、实习工资多少 7、有挖过漏洞么 二、基础知识 1、信息收集的…...

<Java>Map<String,Object>中解析Object类型数据为数组格式

背景&#xff1a; 前端&#xff1a;入参为字符串和数组类型&#xff1b;通过json字符串传给后台&#xff0c; 后台&#xff1a;后台通过工具解析为Map<String&#xff0c;Object>&#xff0c;然后需要解析出Map里面的数组值做操作&#xff1b; 需求&#xff1a; 入参&…...

别再分库分表了,试试TiDB!

什么是NewSQL 传统SQL的问题 升级服务器硬件 数据分片 NoSQL 的问题 优点 缺点 NewSQL 特性 NewSQL 的主要特性 三种SQL的对比 TiDB怎么来的 TiDB社区版和企业版 TIDB核心特性 水平弹性扩展 分布式事务支持 金融级高可用 实时 HTAP 云原生的分布式数据库 高度兼…...

Java进阶之Dump文件初体验

视频地址&#xff1a;https://www.bilibili.com/video/BV1Ak4y137oh 学习文章&#xff1a;https://d9bp4nr5ye.feishu.cn/wiki/VQoAwlzrXiLFZekuLIyc1uK5nqc 最近线上频繁的内存告警&#xff0c;同事A通过分析dump文件解决了这个问题&#xff0c;我当然是不会放过这种学习的机…...

基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

曲线拟合(MATLAB拟合工具箱)位置前馈量计算(压力闭环控制应用)

利用PLC进行压力闭环控制的项目背景介绍请查看下面文章链接,这里不再赘述。 信捷PLC压力闭环控制应用(C语言完整PD、PID源代码)_RXXW_Dor的博客-CSDN博客闭环控制的系列文章,可以查看PID专栏的的系列文章,链接如下:张力控制之速度闭环(速度前馈量计算)_RXXW_Dor的博客-CSD…...

小程序使用echarts

参考文档&#xff1a;echarts官网、echarts-for-weixin 第一步引入组件库&#xff0c;可直接从echarts-for-weixin下载&#xff0c;也可以从echarts官网自定义生成&#xff0c;这里我们就不贴了组件库引入好后&#xff0c;就是页面引用啦&#xff0c;废话不多说&#xff0c;直…...

面向对象——封装

C面向对象的三大特性为&#xff1a;封装、继承、多态 C认为万事万物都皆为对象&#xff0c;对象上有其属性和行为 例如&#xff1a; ​ 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重…&#xff0c;行为有走、跑、跳、吃饭、唱歌… ​ 车也可以作为对象&#xf…...

网络爬虫一课一得

网页爬虫&#xff08;Web Crawler&#xff09;是一种自动化程序&#xff0c;通过模拟人类浏览行为&#xff0c;从互联网上抓取、解析和存储网页数据。其核心作用是高效获取并结构化网络信息&#xff0c;为后续分析和应用提供数据基础。以下是其详细作用和用途方向&#xff1a; …...

嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析

第一部分 移除挂起等待列表中的任务 while( listLIST_IS_EMPTY( &xPendingReadyList ) pdFALSE )//循环寻找直到为空&#xff0c;把全部任务扫描一遍 { pxTCB ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingR…...

ISO 17387——解读自动驾驶相关标准法规(LCDAS)

Intelligent transport systems — Lane change decision aid systems (LCDAS) — Performance requirements and test procedures(First edition: 2008-05-01) 原文链接&#xff1a;https://cdn.standards.iteh.ai/samples/43654/701fd49bde7b4d3db165444b7c6f0c53/ISO-17387…...

Qt/C++学习系列之Excel使用记录

Qt/C学习系列之Excel使用记录 前言The process was ended forcefully.解决方式断点查语句问题 总结 前言 在项目中解析条目达50多条&#xff0c;并且都需要将对应的结果进行显示。为了将结果显示的更加清晰&#xff0c;考虑采用QTableWidget进行表格设置&#xff0c;而在使用过…...

算法-多条件排序

1、数对排序的使用 pair<ll,ll> a[31];//cmp为比较规则 ll cmp(pair<ll,ll>a,pair<ll,ll>b){if(a.first!b.first)return a.first>b.first;else return a.second<b.second; }//按照比较规则进行排序 sort(a1,a31,cmp); 2、具体例题 输入样例&#xff1…...

【分销系统商城】

分销商城系统是一种结合电商与社交裂变的多层级分销管理平台&#xff0c;通过佣金激励用户成为分销商&#xff0c;实现低成本快速拓客和销量增长。以下是其核心要点解析&#xff1a; &#x1f6cd;️ ​​一、系统定义与核心价值​​ ​​基本概念​​ ​​核心模式​​&#…...

【高效开发工具系列】Blackmagic Disk Speed Test for Mac:专业硬盘测速工具

博客目录 一、Blackmagic Disk Speed Test 概述二、软件核心功能解析三、v3.3 版本的新特性与改进四、实际应用场景分析五、使用技巧与最佳实践六、与其他工具的比较及优势 一、Blackmagic Disk Speed Test 概述 Blackmagic Disk Speed Test 是 Mac 平台上广受专业人士青睐的一…...

Ubuntu20.04基础配置安装——系统安装(一)

引言&#xff1a; 工作需要&#xff0c;Ubuntu的各类环境配置&#xff0c;从23年开始使用Ubuntu20.04之后&#xff0c;尽管能力在不断提升&#xff0c;但是依旧会遇到Ubuntu系统崩掉的情况&#xff0c;为了方便后续系统出现问题及时替换&#xff0c;减少从网上搜索资源进行基础…...

wordpress+woocommerce电商平台搭建方案的优势分析

以下是WordPress WooCommerce电商平台搭建方案的优势分析&#xff1a; 技术架构与功能扩展优势 强大的插件生态系统&#xff1a;WordPress拥有超过58000个插件&#xff0c;WooCommerce作为其中最受欢迎的电商插件&#xff0c;提供了丰富的功能扩展选项&#xff0c;如支持超过…...

ocrapi服务docker镜像使用

umiocr只能用于windows&#xff0c;http服务只能找旧版&#xff0c;没办法&#xff0c;只能找docker替代一下了。 umiocr 使用paddleOCR和rapidOCR引擎。以下时这两个docker的运行方法 paddleOCR使用 duolabmeng666的ppocr镜像 镜像大小约2.6G docker run -itd --name ppoc…...