ubuntu20.04系统下,c++图形库Matplot++配置

linux下安装c++图形库Matplot++,使得c++可以可视化编程;安装Matplot++之前,需要先安装一个gnuplot,因为Matplot++是依赖于此库
gnuplot下载链接:
http://www.gnuplot.info/

一、gnuplot下载与安装(可以跳过,下面源码安装,直接apt install gnuplot)

下面==gunplot的安装步骤可以跳过,直接用apt包管理器安装==

step1.进入链接点击Release链接,如下图所示

在这里插入图片描述

step2. 选择tar.gz后缀文件,进行下载:

在这里插入图片描述

step3.下载成功后,cd进入安装包的目录,然后使用tar命令进行解压;
tar -zxvf gnuplot-6.0.1.tar.gz

tar -zxvf 是用于解压 .tar.gz 格式压缩包的常用命令,其中每个参数的含义如下:

  • -z:通过 gzip 进行解压缩。.tar.gz 文件是先用 tar 进行打包,然后用 gzip 压缩的。
  • -x:解压文件(extract)。
  • -v:显示解压过程中的文件列表(verbose)。
  • -f:指定要操作的文件(file)。这个选项需要紧跟在压缩文件名之前。
step4. 解压缩后进入此文件夹
cd gnuplot-6.0.1
step5. 进入文件夹后,做一些依赖配置
sudo apt install qtbase5-dev qtbase5-dev-tools libqt5svg5-dev qttools5-dev-tools

此命令安装一些依赖,包括qt5相关的一些工具,这里如果后面报错,可能是系统还缺乏其他依赖,可以再问下gpt,进行补充安装;

step6 .配置编译选项:
./configure --prefix=/usr/local/gnuplot --with-qt=qt5

其中,--perfix是设置安装路径,--with是设置依赖

step 7. 编译,安装

首先使用make命令进行编译
在这里插入图片描述
这里编译不通过可能是缺少依赖,具体缺少什么,可以自行检查;

然后再安装:

sudo make install
step8. 配置环境变量

配置环境变量:
使用gedit打开.bashrc

sudo gedit ~/.bashrc

在结尾加入下面环境变量设置并保存:

# for gnuplot
export GNUPLOT=/usr/local/gnuplot
export PATH=/usr/local/gnuplot/bin:$PATH
export MANPATH=/usr/local/gnuplot/share/man/man1:$MANPATH

保存后记得刷新一下环境变量设置:

source ~/.bashrc

然后可以用以下命令进行测试:

which gnuplot
gnuplot--version
gnuplot

下面用which,出现路径则说明安装成功。
在这里插入图片描述

二、Matplot++下载配置

下载链接:
https://alandefreitas.github.io/matplotplusplus/
在这里插入图片描述
进入网址,下滑,点击download按钮
download
链接会跳转到github,然后不要选择最新的,而是选择下面的1.2.0版本,因为这个版本有编译后的软件包,安装起来比较方便。
在这里插入图片描述

下载后安装Matplot++

首先,进入下载的目录,进行安装包解压,并进入解压后的文件夹;

tar -xvzf Matplot++-1.2.0-Linux.tar.gz
cd Matplot++-1.2.0-Linux

会有两个文件
在这里插入图片描述
这两个文件内部都是直接已经编译好的,可以直接放到ubuntu的对应系统目录里,编译器便可以识别到。

sudo mv ./include/matplot/  /usr/local/include/
sudo mv ./lib/*   /usr/local/lib/

最后,要进行包含头文件,以及对CmakeList.txt的编写,以管理库依赖,C++包含:

#include "matplot/matplot.h"

这里这个头文件的写法,是因为,默认编译器会搜索到/user/loacal/include这一层,这一层都是文件夹,比如matplot就在这层级,而matplot.h在matplot文件夹下,故要#include "matplot/matplot.h"这样包含。

CMakeLists添加:
重点是以下几个命令的添加。

find package(Matplot++REQUIRED)
if (TARGET Matplot++:matplot)
message(STATUS "**Matplot++found ***")
endif()
target link libraries(${PROJECT NAME}
PUBLIC
Matplot++:matplot)

完整的CMakeLists.txt文件为:

cmake_minimum_required (VERSION 3.10)
project(test)
set(CMAKE_CXX_STANDARD 11)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)find_package(Matplot++ REQUIRED)
if (TARGET Matplot++::matplot)
message(STATUS "**Matplot++found**")
endif()
add_executable(matplottest test.cpp)target_link_libraries(matplottest
PUBLIC
Matplot++::matplot
)

然后,Matplot++的官网有很多示例,可以学习使用;
https://alandefreitas.github.io/matplotplusplus/

在这里插入图片描述

下面是自己的文件结构:
在这里插入图片描述
然后点击左下角的build按钮进行编译,点击左下角的运行按钮,便可以画出图。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

业务调度 -- OTN集群

传输网络Mesh化客观上导致了单节点的业务维度增多以及调度需求增大,通过组建OTN集群可实现业务跨子架调度,容量按需扩展,高效疏导网络节点流量。 什么是OTN集群 OTN集群是OTN设备的一种组合应用形式,多个OTN子架通过集群交叉板互…

启动hadoop集群出现there is no HDFS_NAMENODE_USER defined.Aborting operation

解决方案 在hadoop-env.sh中添加 export HDFS_DATANODE_USERroot export HDFS_NAMENODE_USERroot export HDFS_SECONDARYNAMENODE_USERroot export YARN_RESOURCEMANAGER_USERroot export YARN_NODEMANAGER_USERroot 再次运行即可。

Android 安卓内存安全漏洞数量大幅下降的原因

谷歌决定使用内存安全的编程语言 Rust 向 Android 代码库中写入新代码,尽管旧代码(用 C/C 编写)没有被重写,但内存安全漏洞却大幅减少。 Android 代码库中每年发现的内存安全漏洞数量(来源:谷歌&#xff09…

Python办公自动化案例:实现XMind文件转换成Excel文件

案例:实现XMind文件转换成Excel文件 将XMind文件转换为Excel文件的过程可以通过几个步骤来实现,主要涉及到读取XMind文件,解析其内容,然后创建一个Excel文件并将解析的内容写入。以下是一个简化的Python脚本,展示了如何使用xmindparser库来解析XMind文件,并使用pandas库…

初识Linux · 进程终止

目录 前言: 进程终止在干什么 进程终止的3种情况 进程如何终止 前言: 由上文的地址空间的学习,我们已经知道了进程不是单纯的等于PCB 自己的代码和数据,进程实际上是等于PCB mm_struct(地址空间) 页表 自己的代码和数据。…

PCL 法线空间采样

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 法线计算 2.1.2 基于法线进行采样 2.1.3 可视化原始点云和采样后的点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实…

戴尔电脑怎么开启vt虚拟化_戴尔电脑新旧机型开启vt虚拟化教程

最近使用戴尔电脑的小伙伴们问我,戴尔电脑怎么开启vt虚拟。大多数可以在Bios中开启vt虚拟化技术,当CPU支持VT-x虚拟化技术,有些电脑会自动开启VT-x虚拟化技术功能。而大部分的电脑则需要在Bios Setup界面中,手动进行设置&#xff…

CEPH的写入流程

1、客户端程序发起对文件的读写请求,ceph前端接口(RADOS Gateway)将文件切分成多个固定大小的对象(默认大小为4MB) 2、计算文件到对象的映射 (1) 计算OID为每个对象分配一个唯一的OID(Object ID&#xff09…

跟着谭书学c语言---110页第5章循环结构(5.1和5.2节)

目录 5.1节读书笔记 5.2节读书笔记 总结和反思 5.1节读书笔记 5.2节读书笔记 几点说明:::用小规模数据测试程序的正确性,加断点,打印中间状态 关于程序分析(2)深刻体会循环前的初始化,同样的功能如果初始化条件不同,循环有可能会有细微的变化 循环体中,语句进行调…

[Linux]僵尸进程,孤儿进程,环境变量

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

C++ string的基本运用详细解剖

string的基本操作 一.与C语言中字符串的区别二.标准库中的string三.string中常用接口的介绍1.string中常用的构造函数2.string类对象的容量操作函数3.string类对象的访问及遍历操作4.string类对象的修改操作5.string类的非成员函数6.string中的其他一些操作 一.与C语言中字符串…

软考论文《论大数据处理架构及其应用》精选试读

论文真题 模型驱动架构设计是一种用于应用系统开发的软件设计方法,以模型构造、模型转换和精化为核心,提供了一套软件设计的指导规范。在模型驱动架构环境下,通过创建出机器可读和高度抽象的模型实现对不同问题域的描述,这些模型…

《Windows PE》3.2 PE头结构-DOS头和DOS块

正如我们在初识PE文件一节中看到的,PE文件头中包含几个重要的结构,DOS头、DOS块(DOS Stub)和NT头。NT头就是PE特征码文件头(COFF 文件标头)扩展头(可选标头),合称为NT头。…

Anki 学习日记 - 卡片模版 - 单选ABCD(纯操作)

摘要:在不懂前端语言的情况下自定义卡片模版,卡片模版的字段 安装(官网):Anki - powerful, intelligent flashcards (ankiweb.net) 一、在哪能修改卡片模版 管理笔记模板 - > 添加 -> 问答题 -> 设置名称 二…

建筑物变化检测算法baseline工程,开箱即用,23年5月测试准确度超越阿里云aiearth

建筑物变化检测算法baseline工程,开箱即用,23年5月测试准确度超越阿里云aiearth 建筑物变化检测算法Baseline工程 项目背景 随着城市化进程的加快,对建筑物的变化进行监测变得尤为重要。这不仅有助于城市管理与规划,还能够为灾害…

Flutter路由

路由作为一种页面切换的能力,非常重要。Flutter 中路由管理有几个重要的点。 Navigator 1.0:Flutter 早期路由系统,侧重于移动端 ,命令式编程风格,使用 Navigator.push() 和 Navigator.pop() 等方法来管理路由栈。 N…

多处理器的概念与对比

SISD, SIMD, MISD, 和 MIMD 代表了并行计算的四种基本架构,它们描述了处理器如何处理指令和数据。 理解这些架构的关键在于区分指令流(Instruction Stream)和数据流(Data Stream)是单一的还是多重的。 1. SISD (Singl…

04 B-树

目录 常见的搜索结构B-树概念B-树的插入分析B-树的插入实现B树和B*树B-树的应用 1. 常见的搜索结构 种类数据格式时间复杂度顺序查找无要求O(N)二分查找有序O( l o g 2 N log_2N log2​N)二分搜索树无要求O(N)二叉平衡树无要求O( l o g 2 N log_2N log2​N)哈希无要求O(1) 以…

彩虹易支付最新版源码及安装教程(修复BUG+新增加订单投诉功能)

该系统也没版本号,此版本目前是比较新的版本,增加了订单投诉功能,和一个好看的二次元模板。 此版本是全开源版,无一处加密文件,系统默认是安装后是打不开的, 本站特别修复了BUG文件,在PHP7.4环境下也没问…

ISA-95制造业中企业和控制系统的集成的国际标准-(2)

ISA-95 文章目录 ISA-95ISA-95企业层和制造运营管理层信息模型一、企业层和制造运营管理层信息模型内容二、企业层和制造运营管理层信息模型分类 ISA-95企业层和制造运营管理层信息模型 ISA-95信息模型是指ISA-95制造业中企业和控制系统集成的国际标准定义了企业层和制造运营层…