Ubuntu系统下HDF5源码安装使用步骤(基于ubuntu22.04版本)

HDF5源码安装使用步骤(基于ubuntu22.04版本)

概要:Ubuntu22通过源代码安装HDF5

HDF5是一种针对大量数据进行组织和存储的文件格式。经历了20多年的发展,HDF格式的最新版本是HDF5,它包含了数据模型,库,和文件格式标准。以其便捷有效,移植性强,灵活可扩展的特点受到了广泛的关注和应用。

1.首先是在官网下载源代码进行编译安装

https://www.hdfgroup.org/downloads/hdf5/source-code/
在这里插入图片描述

2.解压文件,进入该文件夹

  1. 在ubuntu系统的home中的用户文件夹新建文件,将其拷贝带新建的文件夹中,使用解压指令进行 (tar -zxvf hdf5-1.14.4-2.tar.gz),解压完成进入该文件夹(cd hdf5-1.14.4
  2. 执行一系列的安装操作,ubuntu22.04没有自带gcc 和 g++编译器需自己安装,可以使用指令
    sudo apt update,sudo apt install build-essential
    编译器安装出现其他问题可自行去网上查询解决方案。
  3. 源代码编译流程,依次执行下面的命令,执行命令之前确保自己进入hdf5-1.14.4。具体的下载的代码参考官网,若官网代码更新升级,代码版本可能会变化!执行以下指令进行安装。
sudo ./configure --prefix=/usr/local/hdf5 --enable-cxx
sudo make
sudo make check
sudo make install
sudo make check-install

如果安装步骤1出现“line 3: $'\r': command not found”等报错问题,使用下面的额命令把当前文件里的所有包含windows风格的行结束符的文件转换成unix风格的行结束, 使用指令: find . -type f -exec dos2unix {} \,进行解决。

  1. 安装完成之后,在ubuntu系统下进入/usr/local/ 在这个目录下发现hdf5文件夹,并进入这个文件,发现/bin /include /lib /share目录的话,安装成功

验证测试,并用C++代码,创建一个HDF5数据!

提示:这里可以编写测试代码,这里以C++代码为例,首先是确保自己的ubuntu系统安装vim编辑器(sudo apt install vim),若出现例如软件依赖错误,可自己网上查找解决方案!也可以使用vi编辑器。也可以安装其他的代码编辑平台,如VScode等,这里我以vim编辑器进行演示。(提示:需要使用者有一定的vim操作基础

C++代码案例:

	#include <H5Cpp.h>
	#include <iostream>
	
	using namespace H5;
	using namespace std;
	
	int main() {
	    try {
	        // 创建一个新的HDF5文件
	        H5File file("test.h5", H5F_ACC_TRUNC);
	        
	        // 创建一个简单的数据空间
	        hsize_t dims[2] = {4, 6};
	        DataSpace dataspace(2, dims);
	        
        // 创建一个整数类型的数据集
	        IntType datatype(PredType::NATIVE_INT);
	        datatype.setOrder(H5T_ORDER_LE);
        
	        // 创建数据集
	       DataSet dataset = file.createDataSet("dataset", datatype, dataspace);
       
        // 写入数据
	        int data[4][6];
	        for (int i = 0; i < 4; i++)
	            for (int j = 0; j < 6; j++)
                data[i][j] = i * 6 + j;
	        
        dataset.write(data, PredType::NATIVE_INT);
        cout << "HDF5 file created and dataset written successfully!" << endl;
	        
	   } catch (FileIException &e) {
	        cerr << "File Exception: " << e.getDetailMsg() << endl;
    	} catch (DataSetIException &e) {
	        cerr << "Dataset Exception: " << e.getDetailMsg() << endl;
    	} catch (DataSpaceIException &e) {
       cerr << "Dataspace Exception: " << e.getDetailMsg() << endl;
    	} catch (DataTypeIException &e) {
        cerr << "Datatype Exception: " << e.getDetailMsg() << endl;
	    }
	    
    return 0;
	}

执行指令:g++ test.cpp -o test -I/usr/local/hdf5/include -L/usr/local/hdf5/lib -lhdf5_cpp -lhdf5
指令详细解释:-I 选项用于指定额外的头文件搜索路径。这里告诉编译器在 /usr/local/hdf5/include 目录中查找头文件。
-L 选项用于指定额外的库文件搜索路径。这里告诉编译器在 /usr/local/hdf5/lib 目录中查找库文件。
-l 选项用于指定要链接的库。这部分告诉编译器链接名为 hdf5_cpp 的库。
执行完这个指令后会在当前文件夹下会输出一个,test文件。如何执行这个文件,
方法1:确保你的 LD_LIBRARY_PATH 环境变量中包含HDF5库的路径。你可以在终端中临时设置这个变量:
export LD_LIBRARY_PATH=/usr/local/hdf5/lib:$LD_LIBRARY_PATH

如果你希望永久设置这个变量,可以将它添加到你的 .bashrc 或 .zshrc 文件中:

echo 'export LD_LIBRARY_PATH=/usr/local/hdf5/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

方法2:将HDF5库的路径添加到系统的库路径中。创建一个新的配置文件,例如 /etc/ld.so.conf.d/hdf5.conf,并将HDF5库的路径写入其中:

echo "/usr/local/hdf5/lib" | sudo tee /etc/ld.so.conf.d/hdf5.conf

然后运行 ldconfig 以更新库缓存:sudo ldconfig
方法3:(推荐使用这个)在运行程序时指定库路径:LD_LIBRARY_PATH=/usr/local/hdf5/lib ./test
出现如下输出,代表验证成功,并创建了一个test.h5的数据模型
在这里插入图片描述

创建成功后的HDF5数据如何查看

` 提示:

对于这个test.h5文件如何查看,在ubuntu系统中,使用指令:sudo apt install hdf5-tools
安装工具包,执行:h5dump test.h5 显示数据结构。
`

在这里插入图片描述

额外补充

如果你熟悉Python,可以使用h5py库来读取HDF5文件并查看数据。以下是一个简单的Python示例:需要自己安装h5py库

import h5py

# 打开HDF5文件
with h5py.File('test.h5', 'r') as file:
    # 列出所有的组
    keys = list(file.keys())
    print("Keys: %s" % keys)
    
    # 遍历所有键并打印它们的形状和部分内容
    for key in keys:
        dataset = file[key]
        print(f"Shape of {key}: {dataset.shape}")
        print(f"Data of {key}: {dataset[:10]}")  # 打印前10个数据


希望这个博客能够帮助你,喜欢的请点个赞吧!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值