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;
}

官方例子

https://docs.hdfgroup.org/archive/support/HDF5/doc1.8/cpplus_RM/examples.html

在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值