LoginSignup
0
3

More than 3 years have passed since last update.

Ubuntu18.04(wsl1,wsl2)でOpenModelicaをビルドする

Last updated at Posted at 2019-12-27

概要

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が通ることまでは確認しています。

0
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3