概要
OpenModelicaをソースからビルドしたときの備忘録です。(2019/12月時点)
Ubutnu-18.04の場合の例であり、Windows10+wslでも同じ方法でビルドできます。
前提パッケージ
OpenModelicaのgithubで列挙されている前提要件を、
Ubuntu-18.04で配布されているパッケージ名で紹介します。
sudo apt install \
autoconf make cmake \
clang-8 clang++-8 libstdc++-8-dev libboost-all-dev \
gfortran \
default-jre \
gettext libncurses5-dev libreadline-dev libexpat-dev libopenblas-dev liblpsolve55-dev libsundials-dev \
qt5-default qttools5-dev-tools \
libqt5webkit5-dev libqt5svg5-dev libqt5xmlpatterns5-dev
- ビルドツール
- C/C++ コンパイラ
- Fortran コンパイラ
- java 実行環境
- ライブラリ群(数値計算ソルバほか)
- qt5 (GUIフレームワーク)
githubよりソースを取得
最新のリリースが欲しいだけなら素直にパッケージマネージャでとればいいので、過去のリリース版v1.13.2のソースを取得します。
git clone
でリポジトリを取得
git clone するだけですが、2点注意点があります。
OpenModelicaの構成要素のうちいくつかは、git submoduleで管理されていますので、
--recursive オプションをつけて、再帰的にcloneする必要があります。
また、あるタイミングのアップデートで、もともとOpenModelica本体に含まれていたコードがsubmoduleに移動したり、逆にsubmoduleが本体に移動したりしているようで、cloneしてから過去のリリースにcheckoutすると、submoduleの参照を貼り直したりしないといけなくなったりします。
ですので、以下のようにタグを直接指定してcloneすることをお勧めします。
git clone -b v1.13.2 --recursive \
https://github.com/OpenModelica/OpenModelica.git OpenModelica-v1.13.2
ビルド
autoconfしてmakeするだけです。
autoconf
./configure CC=clang-8 CXX=clang++-8 --with-cppruntime
make -j4 omc omplot omshell omedit
make install
インストール先の変更 (複数バージョンを入れたい場合)
上の設定だと、make install
したときのインストール先がデフォルトとなるので、二回目以降ビルドしたときに上書きされてしまいます。 それを避けるために、configureの段階でインストール先を変更しておきます。
- ./configure CC=clang-8 CXX=clang++-8 --with-cppruntime
+ ./configure CC=clang-8 CXX=clang++-8 --with-cppruntime --prefix=/opt/OpenModelica/v1.13.2
こうすると、/opt/OpenModelica/v1.13.2
にアプリケーションやライブラリをインストールするようになります。
OpenModelicaの各アプリケーションは、/usr/bin/
にインストールされることを期待して、/usr/lib/omlibrary
のModelica Standard Libraryを読みに行きます。
上の手順でインストールすると、ビルドされたアプリケーションは/opt/OpenModelica/v1.13.2/bin/../lib/omlibrary
つまり/opt/OpenModelica/v1.13.2/lib/omlibrary
を読みにいき、ここにはModelica Standard Libraryが存在しないため、うまく動きません。この問題は、当該ディレクトリに/usr/lib/omlibrary
へのシンボリックリンクを貼ることで解決できます。
ln -s /usr/lib/omlibrary /opt/OpenModelica/v1.13.2/lib/omlibrary
omc -g=MetaModelica
のテストが失敗してビルドできない時 (対応については要検討)
omc (OpenModelicaによるModelicaコンパイラ)のビルド時に、テスト用のコードやスクリプトを実行して、omcのテストをするステップがあります。
このテストに失敗をしてmake omc
が通らなくなるケースがしばしばありました。何度か試していたところ、テスト用のスクリプトが起動するomcと、今ビルドしているomcが一致していないことが原因とわかりました。
たとえば、ここまでの説明の設定では、ビルドされたomcのパスは、path/to/OpenModelica-v1.13.2/build/bin/omc
なのですが、失敗したテストでは/usr/bin/omc
を起動していることがわかりました。(このページで解説した複数バージョンインストール以外に、最新版をパッケージマネージャから入れて運用していた状況。)
テストに使うomcの場所を、configureなどで指定できるのではないかと、試行錯誤しているのですが、現時点(2020/07/15)では実を結んでおらず、apt remove openmodelica
で一時的にパッケージマネージャから入れたopenmodelicaを消し、(もちろん/usr/bin/omc
も消える)この状態でならmake omc
が通ることまでは確認しています。