CUnit在ARM平台上的离线搭建(让CUnit编译安装成功之后的可执行文件.so变成ARM下的—ARM aarch64)(实用篇)
- 前言:
- 1 CUint-2.1-3.tar.bz2压缩安装包下载并解压
- 2 进入CUint-2.1-3目录并且通过指令./bootstrap*产生configure *执行文件
- 3 执行./configure*命令
- 4 make编译
- 5 make install 安装
前言:
在X86架构上的Linux操作系统上面进行cmake编译(CycloneDDS的C版本),在进行testing的时候需要依赖CUnit单元测试工具,之前已经成功安装了,可以参考文章:
X86架构的Linux(Ubuntu版本)上离线安装CUnit来解决Could not find CUnit(missing:CUNIT_LIBRARY)问题
这中方法中打开Cunit目录,经过make 、make install等步骤生成的可执行文件,通过file命令可以看到其格式为:。如下图所示:

它还是属于X86架构下,我们要在ARM架构上cmake编译C语言版本的CycloneDDS代码,所以需要ARM下的CUnit执行文件,最终生成之后的结果应该是如下图所示:

下面进行CUnit单元测试工具在ARM架构Linux操作系统上的安装
1 CUint-2.1-3.tar.bz2压缩安装包下载并解压
下载方法已经在下面文章中给出,品一下:
X86架构的Linux(Ubuntu版本)上离线安装CUnit来解决Could not find CUnit(missing:CUNIT_LIBRARY)问题
下载完成之后,如果需要将文件包从Windows传输到Linux上面请参考下面文章,看过的都说好:
Windows与Linux系统实现文件互传(通俗易懂)
下载成功之后的文件名为:CUint-2.1-3.tar.bz2
使用命令解压:tar -jxvf CUint-2.1-3.tar.bz2
解压后的文件夹名称为:CUint-2.1-3
如下图所示我将解压包放在了/home/ubuntu/Documents/ARM下面,此时目录下面包含以下文件包:

2 进入CUint-2.1-3目录并且通过指令./bootstrap*产生configure *执行文件
上一步中我们解压安装包,进入CUint-2.1-3目录之后通过ll命令看到
如下图所示:

我们通过命令打开vim ./Makefile文件,如下图所示:

Makefile文件里面很多东西都是默认的,这样的话make编译出来的库文件都是默认Linux架构下的(X86),所以为了构建出ARM架构下的Cunit,需要改动Makefile文件,但是Makefile文件里面需要连环改动的地方太多,不好下手,所以直接使用命令行的方式来做。
使用如下命令产生configure *执行文件:
./bootstrap --prefix=/home/ubuntu/Documents/install_ARM/ CC=/usr/local/arm/aarch64--glibc--stable-2022.03-1/bin/aarch64-linux-gcc CXX=/usr/local/arm/aarch64--glibc--stable-2022.03-1/bin/aarch64-linux-g++ --host=arm-linux
参数解释:
1、--prefix=后面所跟的就是你所选择的安装路径
这里我选的是:/home/ubuntu/Documents/install_ARM/
2、CC后面跟的就是我们ARM架构下的C语言编译器
CC=/usr/local/arm/aarch64--glibc--stable-2022.03-1/bin/aarch64-linux-gcc
上面的地址是Linux上交叉编译工具链的解压安装地址,c编译器使用的是工具链下bin目录下面的aarch64-linux-gcc
3、CXX后面跟的就是我们ARM架构下的C++的编译器
CXX=/usr/local/arm/aarch64--glibc--stable-2022.03-1/bin/aarch64-linux-g++
同理,C++编译器使用的是工具链下bin目录下面的aarch64-linux-g++
4、--host是指定软件运行的系统平台,如果没有指定,将会自动去搜索
--host=arm-linux表示软件系统平台是ARM
上述指令执行完成以后显示如下图所示:
产生了configure文件

3 执行./configure*命令
同上一步,configure*配置默认的是gcc编译器,我们现在是在ARM平台上进行编译,所以需要更改编译器
指令如下:
./configure --prefix=/home/ubuntu/Documents/install_ARM/ CC=/usr/local/arm/aarch64--glibc--stable-2022.03-1/bin/aarch64-linux-gcc CXX=/usr/local/arm/aarch64--glibc--stable-2022.03-1/bin/aarch64-linux-g++ --host=arm-linux
此指令的解释与第二步中相同,就不赘述啦
执行结果如下图所示:

4 make编译
linux终端输入:make
如下图所示:


5 make install 安装

安装完成之后,在安装路径下打开CUnit库文件查看文件类型属性
输入:file 文件名
显示结果如下图所示,说明ARM架构上CUnit搭建完成

完结撒花~~~~
相关文章:
CUnit在ARM平台上的离线搭建(让CUnit编译安装成功之后的可执行文件.so变成ARM下的—ARM aarch64)(实用篇)
前言:1 CUint-2.1-3.tar.bz2压缩安装包下载并解压2 进入CUint-2.1-3目录并且通过指令./bootstrap*产生configure *执行文件3 执行./configure*命令4 make编译5 make install 安装 前言: 在X86架构上的Linux操作系统上面进行cmake编译(Cyclon…...
整数序列(山东大学考研机试题)
水仙花数(中南考研机试题) 链接:3644. 水仙花数 - AcWing题库 /* 暴力枚举罢了 */ #include<iostream> using namespace std; const int N1e3100; int book[N]; int pow3(int k){return k*k*k; } int main() {int m,n;for(int i100;i<999;i){int t1,t2,t3;t1 i%10;t…...
k8s集群安装
目录 一 主机准备 1.1 设备配置 ⚠️注意1 ⚠️注意2 1.2 环境准备 1.3docker安装 二 安装kubeadm、kubectl、kubelet 2.1 添加镜像源 2.2 安装 三 master节点部署 四 node节点加入集群 五 CNI网络插件calico 六 其他节点使用kubectl 1.拷贝文件 2.添加到环境变量…...
【webrtc】ProcessThreadAttached
RegisterModule 调用所在的线程指针传递给ProcessThreadAttached ProcessThreadAttached 调用不是在worker thread 而是在 registers/deregister 这个module或者 start stop 这个module的时候 ** ** pacedsender是一个moudle -实现了...
Orange pi3初调试
因为树莓派沦为理财产品1年前出手殆尽后,现在唯一一个B性能不足一直没动力调试,沦为吃灰工具。 偶然之间多多给推了个orange产品预售,看了下pi3的参数,这不和赚了差价的3B一个性能吗?果断定了个预售款,在差…...
手机里的视频怎么转换成MP4格式?简单的转换方法分享
MP4格式是一种广泛使用的视频格式,几乎所有设备和操作系统都支持MP4格式的视频播放。无论是使用 iPhone、iPad、安卓手机、电视等各种设备,都可以播放 MP4 格式的视频。这种广泛的兼容性使得 MP4 成为一种非常方便的视频格式,我们可以随时随地…...
Matlab数学建模实战——(Lokta-Volterra掠食者-猎物方程)
1.题目 问题1 该数学建模的第一问和第二问主要是用Matlab求解微分方程组,直接编程即可。 求解 Step1改写 y(1)ry(2)f Step2得y的导数 y(1).2y(1)-ay(1)*y(2)y(2).-y(2)a*y(1)*y(2) Step3编程 clear; a0.01; F(t,y)[2*y(1)-a*y(1)*y(2);-y(2)a*y(1)*y(2)]; […...
windows下软件推荐
起源与目的 选择任何一个系统作为主力系统都是要好好考虑的。 在去年新买了一块1T的SSD后,就好好想了想这个问题。 Arch Linux, Ubuntu, Windows, macOS, deepin都是在考虑范围的。 不过我考虑到使用体验,最终还是选择了windows。 不选择macOS主要是不喜…...
SQlite数据库
SQlite数据库 1.SQLite简介 轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂 SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数…...
Doris-问题
1.启动BE报错 设置系统最大打开文件句柄数(注意这里的*不要去掉) 重启生效!!!重启生效!!!重启生效!!! sudo vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 重启生效...
什么是OA系统,什么是工单系统,有啥区别?
一、OA系统与工单系统介绍 1、什么是OA系统 OA系统全称为Office Automation,即办公自动化系统。它是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台,具有信息管理、流程管理、知识管理(档案和业务管理)、协同办公…...
DDoS攻击:网络安全的威胁
什么是DDoS攻击? DDoS(分布式拒绝服务)攻击是一种恶意网络攻击,目的是通过发送大量的请求或占用目标系统的资源,使其无法正常运行。在DDoS攻击中,攻击者使用分布在多个地理位置的多台计算机(也称…...
docker版jxTMS使用指南:device的调整
本文讲解4.2版jxTMS对device的调整,整个系列的文章请查看:docker版jxTMS使用指南:4.2版升级内容 docker版本的使用,请参考docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 为了适应拉取模…...
AI智能语音机器人的功能和作用都有哪些?
智能语音机器人是一种能够使用自然语言处理技术和人工智能算法,通过声音与用户进行交互的机器人。它可以回答用户提出的问题、处理用户的投诉、提供产品或服务的相关信息等等。 实现一个智能语音机器人需要涉及多个技术领域,包括自然语言处理、语音识别…...
vue3+vite+Ts 基于Antv/x6 绘制流程图
需求效果: 需求: 实现一个流程图,双击可对相应的组件进行一些功能操作; 工具栈: 这里使用antv/x6, 基于vue3vitets进行开发 官网地址: https://x6.antv.antgroup.com/examples/showcase/pra…...
sys V 进程间通信之消息队列
note msgget获取内核消息队列实例 msgctl可以删除内核消息队列实例 msgsnd\msgrcv函数注意struct msgbuf字段的填充 code #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <unistd.h> #include &l…...
Android 报错,闪退(错误)日志保存到手机内存中,以文本文件的形式保存
1.直接贴代码 import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Environment; import android.util.Log;import com.nuotu.atmBookClient.App;import java.io.File; i…...
flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel
flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel 在之前实现了flutter聊天界面的自定义表情的展示,这里记录一下更多操作展开的相机、相册等操作功能实现。 一、查看效果 更多操作展开的相机、相册等操作功能实现。 二、代码实现 展开的操作按钮可能比…...
浅析泵站自动化技术的发展趋势
摘要:基于泵站对我国水利及水务事业的重要性,文章以城市供水行业大型泵站为对象,分析了泵站自动化技术 发展现状,结合泵站自动化技术的发展需求,从管控一体化、系统自诊断、运行信息实时化管理等方面展望了泵 站自动化…...
5.4.1 虚拟专用网VPN
5.4.1 虚拟专用网VPN 我们已经学习了因特网的路由协议(5.3.1 因特网的路由协议(一)、5.3.2 因特网的路由协议(二)基于距离向量算法的RIP协议、5.3.3 因特网的路由协议(三)OSPF协议、5.3.4 因特…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
