ビルドとインストール

注意: Getting Startedを試すだけならこのページのインストール作業は不要である。

インストール

  1. hipc-0.5.zipをダウンロードして解凍する。
  2. ディレクトリhipc-0.5に移動する。
  3. ビルド用のディレクトリを作成する。
  4. ビルド用のディレクトリに移動する。
  5. ビルドタイプとインストール先を指定して、ビルド準備をする。
  6. ビルドする。
  7. テストする。
  8. インストールする。

これらの手順をコマンドで示すと以下のようになる。 以下の例ではビルドタイプにReleaseを、インストール先に/home/foo/hipcを指定している。

unzip hipc-0.5.zip
cd hipc-0.5
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/home/foo/hipc ..
make
make test
make install

ビルドタイプ

ビルドタイプには、ReleaseNoneDebugのどれか1つを指定できる。

ReleaseNoneは、-Wallを追加している以外はCMakeのデフォルト設定に準じている。

Debugでは、-Wallに加え、GCCのカバレッジ計測用オプション(-fprofile-arcs -ftest-coverage)などが加えられている。よって、DebugでビルドしたHIPCライブラリを使用するときはリンカオプションとして-fprofile-arcsが必要である。

その他詳細は、CMakeLists.txtを参照のこと。

なお、ビルド時にオプションを含めた実際のコマンドがどうなっているかはmake VERBOSE=1で確認できる。

GCC以外のコンパイラでのビルド

stdint.h

HIPCライブラリでは、hipc.cがstdint.hをインクルードしている。 stdint.hはC99規格で新たに追加された標準ヘッダであるため、stdint.hを用意していないコンパイラもある。 このようなコンパイラではビルドエラーとなるが、ユーザーがstdint.hを作成することが解決策の1つになる。

hipc.cが利用している型はuint16_tだけであるため、この型だけを定義したstdint.h(shortが16ビットの場合の例)をhipc.hと同じ場所に置くだけでも、ビルドは通るはずである。 ただし、HIPCのコンフィギュレーションファイルの記述でもサイズが明示された整数型を頻繁に利用すると考えられるため、uint16_tだけでなく主要な型は定義しておくことを推奨する。

atomic.h: メモリバリア

pbankまたはqueueをGCC以外で使う場合には、hipc/atomic.hを編集してHIPC_MEM_BARRIERを適切に定義する必要がある。そのままのatomic.hではGCC以外のコンパイラでビルドしたときにはHIPC_MEM_BARRIERは空となり、バリアは無くなってしまう。その結果、CPUやコンパイラの最適化によってバリアがあった位置をまたいで命令順が入れ替えられるとpbankもqueueも正しく動作しなくなる。よって、コンパイラに合わせたHIPC_MEM_BARRIERの適切な定義が必要となる。

なお、インオーダーCPUでコンパイラによる最適化(命令順の入れ替え)を無効にした場合は、CPUもコンパイラも命令順を入れ替えないので、atomic.hを編集せずにそのままにしていても正常に動作する可能性が高い。

他の環境での利用

hipc-0.5.zipでそのまま作成できるのはPOSIX環境向けのライブラリであり、これはサーバーにもクライアントにも利用できる。 別にArduino用HIPCライブラリもあり、これはArduinoで動くサーバーにのみ利用できる。

これ以外の環境でHIPCを利用するには、サーバーではusocを、クライアントではhipcOpen()に引数で渡す2つの関数をユーザーが実装し、クライアントとサーバーそれぞれが必要とするファイルと共にビルドする必要がある。 cmakeを実行したディレクトリのhipcディレクトリの中できるccodeとscodeというディレクトリがここでいう必要なファイルを含んでいる。ccodeがクライアント用、scodeがサーバー用である。

ちなみに、.aなどのライブラリファイルを作成せずに手っ取り早くビルドするには、ccodeもしくはscodeのincludeディレクトリの中身をインクルードパスが通った場所に置き、srcディレクトリの中のファイルをユーザーが書いたその他のソースコードと同じようにコンパイルすれば良い。


TOPページ

Last modified: 2015/07/27 08:00:59 +09:00