本ページでは、ソースパッケージより展開したOpenHRPのソースを makeコマンドを用いてコマンドラインからコンパイルする手順を説明します.

makeコマンドによるコンパイルは、Linuxにおいては基本的なコンパイル方法となります。

Windowsに関しては、通常、Visual C++ の統合開発環境上でコンパイルを行います。 これについては、「Windowsにおけるインストール」 をご覧ください。 バージョン3.0.0-RC3まではWindowsに関してもDOS窓からのコマンドラインコンパイルを行っていましたが、 現在ではこの方法はサポートしていません。

ソースパッケージの展開

まず、ダウンロードしたソースパッケージ "OpenHRP-xxx.zip"を、 unzipコマンドなどのZIPファイル解凍ツールを使って適当なディレクトリに展開します. (xxxは3.0.0-RC4といったバージョンを示す文字列が入ります。 ダウンロードしたファイルのものと置き換えて読んでください。)

展開先は、Linuxにおいては、ホームディレクトリ以下の適当なディレクトリに展開するのが一般的です.

Make.vars について

Makeコマンドによるコンパイルでは、 コンパイルの設定を "Make.vars" というファイルで行います.

このファイルは、基本的に

DYNAMICS_ENGINE = aist
OB_DIR =
JDK_DIR = $(HOME)/usr/jdk1.5.0_07
BOOST_INC_DIR =
BOOST_LIB_DIR =
BOOST_LIB_SFX = -mt
TVMET_INC_DIR = $(HOME)/usr/tvmet-1.7.1/include
NS_HOST = localhost
NS_PORT = 2809
といったかたちで、設定項目と設定内容を記述したものになっています。

このファイルはMakefileに取り込んで使うものなので、文法はMakefileと同じです. 例えば、$(環境変数) とすることで、環境変数の値を取り込むこともできます. また、# 以下の文字列はコメントとなります。

設定内容は、主にコンパイルの際に必要なプログラムやライブラリの位置を示したものとなっています。 基本的には、対象とするプログラムやライブラリがOSやコンパイルツールにおいて デフォルトで利用可能な設定となっていれば、 Make.vars で設定する必要はありません。 自前でインストールしたプログラムやライブラリなどがOSやコンパイルツールのパスに取り込まれていない場合に、 Make.vars で設定することになります。

このような設定は configure と呼ばれる自動設定スクリプトで行うことが多いのですが、 OpenHRP3.0系では今のところそのようなスクリプトは用意しておりません。 OpenHRP3.1.0 β版にてCMakeの導入を行ないましたので、今後はバージョン3.1系にて対応していく予定です.

Make.vars の作成

Make.vars を作成するにあたっては、その雛形として利用できるファイルを用意していますので、 これを利用してください.

OpenHRPソースのトップディレクトリに、 OS/ディストリビューションごとに以下の雛形ファイルがあります。

これらのファイルの中から対応するものを、 ソースのトップディレクトリに "Make.vars" としてコピーしてください。

Make.vars の設定内容

雛形よりコピーしたMake.varsについて、必要に応じて修正を行います.

以下ではMake.varsの主要な設定項目を説明します。

ただし、ここで紹介していない設定項目もあり、 バージョンアップに伴って設定内容が変わることもあり得ますので、 雛形ファイルに記述されたコメントもあわせて参考にするようにしてください。

実行方法に関する設定項目
DYNAMICS_ENGINE 使用する動力学サーバの選択。ut (東大版), aist (産総研版) のいずれかを指定する。(※)
NS_HOST ミドルウェア(CORBA,OpenRTM)のネームサーバのホスト。通常は localhost でよい。(※)
NS_PORT ミドルウェア(CORBA,OpenRTM)のネームサーバのポート番号。通常は初期値でよい。(※)
プログラミング言語環境に関する設定項目
JDK_DIR JDKのインストール先ディレクトリ。java, javac といったJDKのコマンドにパスが通っていない場合に指定する。(※)
JYTHON_DIR Jythonのインストール先ディレクトリ。(jython.jarがあるディレクトリ。) (※)
コンパイル方法に関する設定項目
DEBUG_VER デバッグ・オプションの切り替え。以下から選択してください,
    0: (最適化あり、デバッグ情報なし)
    1: (最適化あり、デバッグ情報あり)
    2: (最適化なし、デバッグ情報あり)
CXX_CPU_FLAGS 特定のCPUに対する最適化のためのコンパイルオプションを指定する。SSEなどを使いたい場合、ここで設定するとよい。
ライブラリに関する設定項目
J3DHOME Java3Dのインストール先ディレクトリ。空白の場合は同名の環境変数に${OPENHRPHOME}/client/gui/Java3D/1.4.1/unix を代入します。(※)
JMFHOME JMFのインストール先ディレクトリ。空白の場合は同名の環境変数に ${OPENHRPHOME}/client/gui/JMF2.1.1e/Unix を代入します。(※)
OB_DIR omniORBのインストール先ディレクトリ。
BOOST_INC_DIR boostライブラリのヘッダファイルのための追加パス
BOOST_LIB_DIR boostライブラリのライブラリファイルのための追加パス
BOOST_LIB_SFX boostライブラリのライブラリファイルのサフィックス(拡張子を除く)。 boostのライブラリファイルは様々なバージョンを様々なサフィックスで区別しており、 このサフィックスが環境によって違う場合があるので、ここで指定する。 基本的にはマルチスレッドのリリース版に対応するものを指定すればよい。
TVMET_DIR tvmetライブラリのインストール先ディレクトリ
OPENRTM_DIR OpenRTM-aist のインストール先ディレクトリ
LAPACK_VARIANT LAPACKライブラリの種類を指定する。LAPACK(Fortranオリジナル版), CLAPACK(C言語変換版), ATLAS 等から選択する。
LAPACK_INC_DIR LAPACKのヘッダファイルのための追加パス
LAPACK_LIB_DIR LAPACKのライブラリファイルのための追加パス
LAPACK_VARIANT_LIB_DIR ライブラリファイルが複数のディレクトリにまたがる場合に、LAPACK_LIB_DIRに追加して指定する。
CLAPACK_SUFFIX CLAPACKにおいてライブラリファイルにつく "_LINUX" などのサフィックスがあれば指定する。
M_ARCHITECTURE 特定のアーキテクチャに対するライブラリパス設定、コンパイルオプションの指定などに使用。今はi386のみに対応。予約変数。

(※): 運用時の変更はbin/unix/config.shで行ないます。

パスに関する以下の項目については、システムの実行パス、インクルードパス、ライブラリパスに含まれる ディレクトリ(Linuxにおける /usr, /usr/local 以下などや、自前でパスを設定したディレクトリ) へインストールされている場合は、空白とします。

  • OB_DIR
  • BOOST_INC_DIR, BOOST_LIB_DIR
  • TVMET_DIR
  • OPENRTM_DIR
  • LAPACK_INC_DIR, LAPACK_LIB_DIR, LAPACK_VARIANT_LIB_DIR

また、スペースなどの空白文字を含むパスはコマンドラインツールが対応出来ない場合があるので、 インストール先はそのようなパスを避けるようにしてください。

Makeコマンドの実行

OpenHRPソースのトップディレクトリで make コマンドを実行し、コンパイルを行います。

コンパイルエラーがでた場合は、エラーメッセージを参考に、 必要なプログラムやライブラリが正しくインストールされているか、 Make.vars の設定は正しいかといったことを確認してみてください。

なお、現在のMakefileは依存関係の指定が一部甘い部分があり、 設定をしなおして再コンパイルする際には、 一度 "make clean" を実行して、Makeを最初からやり直す方がよい場合もあります。