• 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
    
    • 1

    修改为

    HDF_CXX=yes
    
    • 1

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

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

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

    Ubuntu 常用解压与压缩命令

    2)定位源码路径

    cd hdf5-X.Y.Z
    
    • 1

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

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

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

    sudo apt-get install libhdf5-dev
    
    • 1

    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;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    在这里插入图片描述

    测试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;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    官方例子

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

    在这里插入图片描述

  • 相关阅读:
    ChatGPT高级数据分析功能
    我又和redis超时杠上了
    chrome v3开发插件实现所有网站允许跨域
    .NET高级技术_04正则、序列化、XML
    国产电影机跟国外品牌相比如何?导演评“差距不大”博冠8K全画幅摄像机落地长春电影制片厂虚拟影棚开拍
    INA226 备忘
    VisualSVN initialization failed, For more details see Output window.
    (Qt) 子组件绘制QPainter
    字节面试官:“这92道 Spring Boot 面试题都答不上来?”
    《Vue入门到精通之webpack详解》
  • 原文地址:https://blog.csdn.net/wokaowokaowokao12345/article/details/126642061