CUnit在ARM平台上的离线搭建(让CUnit编译安装成功之后的可执行文件.so变成ARM下的—ARM aarch64)(实用篇)

news2024/12/24 3:09:14

  • 前言:
  • 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搭建完成

请添加图片描述
完结撒花~~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为你解密免费音频格式转换器软件有哪些

音频格式转换技术是一种将音频文件从一种格式转换为另一种格式的技术。这项技术非常有用,可以帮助我们在不同设备和平台上播放和共享音频文件。现在市场上有许多免费的音频格式转换器软件可供选择,它们提供了方便、快捷的方式来进行音频格式转换。如果你…

MFC 将工具栏的两项中加入空白按钮

先视为普通按钮赋ID ImageList中Add的图为资源视图新建的CBitmap 是个空图 SetButtonText对应的按钮文本也为空格 然后m_toolbar.GetToolBarCtrl().EnableButton(ID_BUTTONS, FALSE);将对应的按钮禁用即可 ID_BUTTONS是第一个按钮的ID值 UINT nArray[21]; for (int i 0; i &l…

burpSuitPro破解安装教程

1、在解压后,如第一次使用BP请先运行 激活脚本 2、启动激活程序后点击 Run ,运行Burp 然后将 License 里面的值复制到 Burp的 key 输入框里,点击 Next : 3、接下来我们要选择使用手动激活 点击 Manual activation 4、将如下输入…

Centos和redhat桥接模式下固定第二个ip地址为可查

这里我们以centos为例子,redhat与其同理 第一步:进入到镜像network-scripts/目录下 cd /etc/sysconfig/network-scripts 第二步: 输入ls查看自己启用的网卡名字并进行编辑,一般centos默认使用的网卡是idcfg-ens33 第三步&…

simulink 实现51单片机流水灯 及代码形式优化

目录 流水灯 代码形式 流水灯 需求:先左移 再右移 自己的 代码形式 2021a版本

pd虚拟机 Parallels Desktop ,让你能够在Mac电脑上同时运行Windows和macOS,简直太棒了!

最近我发现了一款软件——Parallels Desktop,它让我能够在Mac电脑上同时运行Windows和macOS,简直太棒了!我想向大家推荐这款软件,因为它为我的工作和生活带来了巨大的便利和乐趣。 永久访问 https://www.hereitis.cn/soft/Paralle…

Linux开发工具【git】

Linux开发工具【git】 git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是林纳斯托瓦兹(Linus Torvalds)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件,git 的诞生,让我们可以对代…

【Java】一只小菜坤的编程题之旅【2】

文章目录 1丶丑数2、各位相加3丶搜索插入位置4丶第一个错误的版本 1丶丑数 因为丑数只能被2,3,5整除,所以让n依次去除2,3,5,如果最后是n为1,就说明是丑数。 class Solution {public boolean is…

MySQL表的导入导出

目录 导出数据 导出数据语法 导入数据 导入数据语法 有时需要将MySQL中的数据导出到外部存储文件中 MySQL中的数据可以被导出成 sql文本文件xml文件html文件 同样的 该类文件也可以导入到MySQL数据库中 导出数据 导出数据语法 select columnlist from table where co…

typescript环境搭建

安装vscode 安装tsc npm install -g typescript --registryhttps://registry.npm.taobao.org查看是否安装成功 tsc --version管理员身份启动powershell bash set-ExecutionPolicy RemoteSigned

部署 Zabbix 集中监控系统

zabbix 概述 Zabbix 是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级开源监控套件 服务端端口:10051 客户端端口:10050 Zabbix 主要功能 主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细报表图表绘制 Zab…

电压放大器如何驱动电容性负载的

电容性负载是指由电容器或一组电容器组成的负载。在电路中,当电容性负载与电压放大器相连时,电容器下极板的电位将随着输入信号的变化而变化,从而改变输出电压。电压放大器是一种常见的电路,它能够将输入电压信号放大到较大的幅度…

YOLOv5解析 | 第三篇:yolov5s.yaml文件详解

YOLOv5配置了4种不同大小的网络模型,分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,其中 YOLOv5s 是网络深度和宽度最小但检测速度最快的模型,其他3种模型都是在YOLOv5s的基础上不断加深、加宽网络使得网络规模扩大,在增强模型检测性能的同时增加了计算资源和速度消耗。出于对…

k8s kubeadmin方式安装部署

1、节点至少2C2G. 2、首先安装docker, sudo yum install -y docker-ce docker-ce-cli containerd.io#以下是在安装k8s使用的docker版本。注意保持一致 yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6sudo mkdir -p /etc/docker su…

基于iTOP-RK3568开发板进行讲解,本次更新第十一期主要讲解pinctrl子系统共计16讲

1.课cheng规划 2.pinctrl子系统课程引入 3.前置理论-pinctrl_desc结构体.mp4 4.实践-讲解pinctrl_desc结构体实际应用 5.理论:pinctrl子系统三个函数操作集 6.进一步了解rockchip_pinctrl结构体 7.实践:pinctrl子系统三个函数操作集 8.重点:d…

UE4 解决在同一场景播放多个本地视频卡顿的问题(4.27+)

在使用4.27版本开发项目时,需要在同一场景播放多个本地视频,用的是ue自带的播放器,一旦播放的视频多了就会导致卡顿甚至播放不了,查了一下官方文档,虚幻引擎4.27中内置了Bink Media插件,这个插件可以解决这…

Spring MVC 系列1 -- 初识Spring MVC

目录 1. 什么是 Spring MVC? 2. MVC定义 3. 创建SpringMVC项目 ​4. Spring MVC要学习哪些? 1. 什么是 Spring MVC? 官⽅对于 Spring MVC 的描述是这样的: 翻译成中文 从上述定义我们可以得出两个关键信息: 1. Spring MVC 是…

骨传导蓝牙耳机怎么样?盘点当下最流行的几款骨传导耳机

作为耳机资深用户,特别推荐大家使用骨传导耳机,因为骨传导耳机完全不需要入耳,在一定程度上,减少了外耳道和耳膜受损以此保护听力,而且佩戴骨传导耳机时,周围的声音仍然可以听到,避免了因听不到…

伦敦银最新行情分析独到技巧

伦敦银的行情走势时时刻刻都处于变化之中,如果投资者对行情分析得好,无论是市场上涨还是下跌都可以获利,无论做多做空都可以赚钱。如果投资者想更好地发挥伦敦银双向交易的优势,就要对后市的运行的方向有一个基本的判断。 在分析伦…

​​​​layui 实现左侧菜单栏及子类(二)​​

目录 ​ 一,分析左侧菜单栏及子类的数据表 ​ 二,实现左侧菜单栏及子类的具体步骤 2.1实体类(与数据库中的字段对应一一!!!) 2.2dao方法 dao类代码: TreeOv工具类代码&#xf…