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

Ubuntu 安装 HDF5 C++库

HDF5

HDF5安装教程在源码包中的release_docs文件夹中的INSTALL文件中有详细介绍。

下载

根据系统选择下载源码包,否则导致编译出错:
https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.13/hdf5-1.13.2/src/
在这里插入图片描述

安装

安装HDF5 C++的库需要将解压目录下的configure文件中的:

HDF_CXX=no

修改为

HDF_CXX=yes

安装HDF5版本号X.Y.Z到路径/usr/local/hdf5的安装步骤如下:

1)用命令解压,也可以直接解压

tar zxf hdf5-X.Y.Z.tar.gz

Ubuntu 常用解压与压缩命令

2)定位源码路径

cd hdf5-X.Y.Z

3)安装,依次执行如下命令

./configure --prefix=/usr/local/hdf5 # 指定安装路径
sudo make
sudo make install

如果不需要安装C++库,可以直接使用命令行安装:

sudo apt-get install libhdf5-dev

ubuntu 16.04 安装 hdf5-1.12 c++库

测试

HDF5 C++ 使用
QtCreator配置HDF5库
1)打开Qt Creator新建一个Qt Console Application程序。添加库“Add Library”,如果该选项没反应,打开Pro文件右键选择“Add Library”。
在这里插入图片描述
2)选择外部库,分别根据自己编译的路劲设置如下:
在这里插入图片描述

测试HDF5写数据

#include "hdf5.h"
#include "stdlib.h"
#include "stdio.h"

int main(){
    hid_t file_id;
    herr_t status;

    // create file; overwrite existing one `H5F_ACC_TRUNC`
    file_id = H5Fcreate("file.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);

//    int *dset = malloc(24*sizeof(int));
    int dset[24];
    for(int i = 0; i < 24; i++){
        dset[i] = i;
    }

    // create data space
    hsize_t dims[2];
    dims[0] = 4;
    dims[1] = 6;
    hid_t dataspace_id = H5Screate_simple(2, dims, NULL);

    // create data set
    hid_t dataset_id = H5Dcreate2(file_id, "/dset", H5T_NATIVE_INT, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
    status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset);

    hid_t group_id = H5Gopen2(file_id, "/MyGroup", H5P_DEFAULT);
    // use group_id instead of file id to create dataset under the group
    hid_t dataset2_id = H5Dcreate2(group_id, "dset2", H5T_STD_I32BE, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
    // write data using dataset2_id

    status = H5Dclose(dataset_id);
    status = H5Sclose(dataspace_id);
    status = H5Fclose(file_id);
    return 0;
}

在这里插入图片描述

测试HDF5读数据

#include "hdf5.h"
#include "stdlib.h"
#include "stdio.h"

int main(){
    hid_t file_id;
    herr_t status;
    file_id = H5Fopen("result.hdf5", H5F_ACC_RDWR,  H5P_DEFAULT);

    // get data set info
    hid_t dataset_id = H5Dopen2(file_id, "/result", H5P_DEFAULT);
    // get data space info
    hid_t space_id = H5Dget_space(dataset_id);
    hsize_t dims_out[2];
    H5Sget_simple_extent_dims(space_id, dims_out, NULL);

    // allocate data buffer
    int *dset_data = malloc(dims_out[0] * dims_out[1] * sizeof(int ));

    status = H5Dread(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,  H5P_DEFAULT, dset_data);

    printf("Read Status: %d \n", status);
    printf("First Three Element %d %d %d \n", dset_data[0], dset_data[1], dset_data[2]);

    /* Close the dataset and dataspace */
    status = H5Dclose(dataset_id);
    status = H5Sclose(space_id);
    status = H5Fclose(file_id);
    free(dset_data);
    return 0;
}

相关文章:

  • 【Linux系统管理】10 Shell 编程进阶篇
  • Jackson ImmunoResearch 直接和间接蛋白质印迹方案
  • bazel构建项目案例(第三方库,编译成库,运行案例)
  • Jackson ImmunoResearch 用于蛋白质印迹的偶联物方案
  • 如何扫描到最新可用的http代理ip?
  • 计算机视觉入门-最小二乘法、随机取样法、鲁棒估计、霍夫变换
  • 猿创征文|Mock.js概述及模块化开发实践(一文足矣)
  • 各种芯片复位电路分析
  • java计算机毕业设计奢品网站系统源码+系统+数据库+lw文档+mybatis+运行部署
  • C++项目实战-实际应用
  • Springboot晋韵戏剧点播网站毕业设计源码112304
  • 量化固定投资方法可不可行?
  • 【面试必备】 【ES6】学Vue前必须掌握的内容(上)
  • 一个月疯狂吸粉60万的商业模式——乐享购
  • TiDB v6.2 发版
  • 【笔记】你不知道的JS读书笔记——Promise
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Android组件 - 收藏集 - 掘金
  • ESLint简单操作
  • mysql 数据库四种事务隔离级别
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 安装python包到指定虚拟环境
  • 当SetTimeout遇到了字符串
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 一些关于Rust在2019年的思考
  • 国内开源镜像站点
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (1)Nginx简介和安装教程
  • (145)光线追踪距离场柔和阴影
  • (4) PIVOT 和 UPIVOT 的使用
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转) Android中ViewStub组件使用
  • (转)Android学习笔记 --- android任务栈和启动模式
  • .Net - 类的介绍
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @Bean注解详解
  • [C#C++]类CLASS
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [C++进阶篇]STL中vector的使用
  • [codeforces]Recover the String
  • [C语言]一维数组二维数组的大小
  • [Dxperience.8.*]报表预览控件PrintControl设置