2017-04-01 4 views
1

私はHDF5の依存関係を持ついくつかのコードをコンパイルして実行する特定の要件を持っています。 hdf5 compilerは使用しませんが、HDF5のソースコードをコンパイルします。HDF5ソースコードでcプログラムをコンパイルするには?

私のCプログラムにHDF5をリンクする方法は非常に新しいです。どのようにすればよいのか、cコンパイラを使ってこのプログラムを実行し、hereからダウンロードしたソースファイルをリンクできるように詳しく説明してください。

サンプルCプログラム - コンパイルするため

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
* Copyright by The HDF Group.            * 
* Copyright by the Board of Trustees of the University of Illinois.   * 
* All rights reserved.              * 
*                   * 
* This file is part of HDF5. The full HDF5 copyright notice, including  * 
* terms governing use, modification, and redistribution, is contained in * 
* the files COPYING and Copyright.html. COPYING can be found at the root * 
* of the source code distribution tree; Copyright.html can be found at the * 
* root level of an installed copy of the electronic HDF5 document set and * 
* is linked from the top-level documents page. It can also be found at  * 
* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have   * 
* access to either file, you may request a copy from [email protected]  * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 

/* 
* This example illustrates how to create a dataset that is a 4 x 6 
* array. It is used in the HDF5 Tutorial. 
*/ 

#include "hdf5.h" 
#define FILE "dset.h5" 

int main() { 

    hid_t  file_id, dataset_id, dataspace_id; /* identifiers */ 
    hsize_t  dims[2]; 
    herr_t  status; 

    /* Create a new file using default properties. */ 
    file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); 

    /* Create the data space for the dataset. */ 
    dims[0] = 4; 
    dims[1] = 6; 
    dataspace_id = H5Screate_simple(2, dims, NULL); 

    /* Create the dataset. */ 
    dataset_id = H5Dcreate2(file_id, "/dset", H5T_STD_I32BE, dataspace_id, 
          H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); 

    /* End access to the dataset and release resources used by it. */ 
    status = H5Dclose(dataset_id); 

    /* Terminate access to the data space. */ 
    status = H5Sclose(dataspace_id); 

    /* Close the file. */ 
    status = H5Fclose(file_id); 
} 

答えて

2

、HDF5の含むディレクトリに-Iフラグポイントを有することが必要です。システムインストールの場合、通常は/usr/includeになりますが、HDF5がシリアルまたはパラレル、32/64ビットなどのいずれでインストールされているかによって多くのバリエーションがあります。-L-lフラグのリンクは重要です。 -Lは、単にライブラリ名、-lhdf5などを(私は-lz-lmがほとんど常に使用されていることを信じて)与え.so.dllまたは.dylib HDF5ライブラリのファイル(再び、バリエーションが存在することができる)と-lを保持しているディレクトリを指している必要があります。高レベルライブラリを使用する場合は、-lhdf5_hlが必要です。

それらのフラグをチェックする最も簡単な方法は、それらをすべて一覧表示されます

h5cc -show 

を呼び出すことです。

PS:あなたは、単一のステップ(.cから実行可能ファイルへの)または最初のコンパイル(.oから.c)リンク(実行可能ファイルへの.o)でコンパイルとリンクすることができます。最初のケースでは、すべて-I,-Lおよび-lフラグが必要です。

関連する問題