Ubuntu 安装 HDF5 C++库

Posted 大作家佚名

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;


以上是关于Ubuntu 安装 HDF5 C++库的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上使用带有 CMake 的 HDF5 库(错误:“找不到 HDF5”)

Caffe学习1-Ubuntu下的Caffe的搭建

在 ubuntu 中安装 HDF5 和 pytables

无法从自制软件安装 hdf5 库

如何在 Ubuntu 中删除已安装的 C++ 库? [复制]

torch7 安装 并安装 hdf5模块 torch模块 nn模块 (系统平台为 ubuntu18.04 版本)