公式サイトのLinux用salome-mecaバイナリをWindowsでネイティブ実行

> Windows版のバイナリが配布され始めました。
> [Code_Aster for Windows](https://code-aster-windows.com/download/)
> したがって、ここに書かれている手順は既に古くなりました。


Linux用バイナリしか配布されていないソフトを実行するには、Linuxがインストールされたマシンを使っている場合問題ないですが、手元にWindowsマシンしかない場合、

1. 空いているコンピュータにLinuxをインストール
2. Hyper-V、VirtualboxやVMWareにLinuxをインストールした仮想マシンを用意

などしてLinuxの環境を整えなければなりません。

1.は大変ですし、2.はProバージョンのWindowsを必要であったり、仮想マシン上ではネイティブ実行の時と比べてパフォーマンス低下が気になります。

フランスのEDF社から配布されている構造解析ソフト[salome_meca] (http://www.code-aster.org)は、公式サイトからソースコードのほか、Linux用のバイナリをダウンロードすることができますが、Windows用のバイナリは用意されていません。
 
## Windows Subsystem for Linux

Windows10は、Windows NTマイクロカーネルの上に、Win32APIサブシステムが動作しているOSです。

同じ要領で Linuxサブシステムを動作させようとしているのがWindows Subsystem for Linux(WSL もしくは bash on windows)です。

WSLでは、Linux等のバイナリフォーマットELFがロード出来るようになっています。原理的にはLinux用のバイナリを実行出来る筈です。

しかし、Xはサポートしていない用なので、Windows用Xサーバを用いてLinux用GUIアプリケーションを動かしてみようと思います。

## WSLのインストール

今回は、Creators Updateが適用されているWindows10(Home、ProどちらでもOK)が手元にあるものとします。

### Windowsを開発者モードへ

WSLを動作させるには、Windowsを開発者モードにする必要があります。

![01.setting.png](https://qiita-image-store.s3.amazonaws.com/0/81482/ded4cafb-fe21-563a-f01a-365d6bd02c5f.png)

「設定」を開きます。

![02.update.png](https://qiita-image-store.s3.amazonaws.com/0/81482/aabdf044-1eb8-8945-f994-82a87c6ed55f.png)

「更新とセキュリティ」を開きます。

![03.devel.png](https://qiita-image-store.s3.amazonaws.com/0/81482/be867053-ebd8-bd2d-62c8-a0407b3e98b9.png)

左ペインにある「開発者向け」を開きます。

![04.devel.png](https://qiita-image-store.s3.amazonaws.com/0/81482/7b5bd8e4-57bf-1e06-bbd5-f04413cbdc52.png)

右ペインの「開発者モード」を選択し再起動をします。

### WSLを有効に

Windows Subsystem for Windowsを有効にします。

![05.appli.png](https://qiita-image-store.s3.amazonaws.com/0/81482/3fdeb0e1-4c5a-4f5a-9d34-93e90084fa79.png)

同様に設定から「アプリ」を開きます。

![06.appli.png](https://qiita-image-store.s3.amazonaws.com/0/81482/bb1ed71e-3002-59e6-60f2-43dc04b81af5.png)

右ペインを下にスクロールしていき「関連設定」を見つけて、その下の「プログラムと機能」を開きます。

![07.appli.png](https://qiita-image-store.s3.amazonaws.com/0/81482/297a1b64-7c37-45d5-fb01-9ef6a0415de7.png)

左ペインの「Windowsの機能の有効化または無効化」を開きます。

![08.appli.png](https://qiita-image-store.s3.amazonaws.com/0/81482/473e1aff-5f79-cabe-7173-56262c088190.png)

「Windows Subsystem for Linux (Beta)」のチェックボックスをオンにします。

![09.bash.png](https://qiita-image-store.s3.amazonaws.com/0/81482/b35d3a65-f5ea-0e48-6b74-590f4563d971.png)

インストールが完了したら「ここに入力して検索」に「`bash`」と入力して`bash` を起動してください。

![10.bash.png](https://qiita-image-store.s3.amazonaws.com/0/81482/90d4dc9b-205f-69ee-3a0d-7ef26dbc24f5.png)

初めて`bash`を起動すると、WindowsストアからUbuntuのダウンロードが始まり、インストールされます。

![11.bash.png](https://qiita-image-store.s3.amazonaws.com/0/81482/3a863e09-51cf-3faa-8631-00732c9c5146.png)

初期設定を行うと`bash`が使える用になります。

Ubuntuをアップデートしておきましょう。`bash`の中で

~~~txt
% sudo apt update
% sudo apt dist-upgrade
~~~

とタイプして下さい。パッケージのアップデートが始まります。

アップデートが終わったら、`exit`と打って一旦`bash`を閉じます。

## vcxsrvをインストール

`vcxsrv`はWindows用のX serverです。`mobaxterm`や`xmingw`を既にインストールしている場合、改めてインストールする必要はありません。

[VcXsrv Windows X Server](https://sourceforge.net/projects/vcxsrv/)からインストーラをダウンロードしてインストールしてください。

![13.vcxsrv.png](https://qiita-image-store.s3.amazonaws.com/0/81482/5d1e9479-dc96-b3b4-2305-54e17b3dc4f5.png)

インストールされると、デスクトップにアイコンが現れます。

## salome_mecaをインストール

salome_mecaをインストールします。先ほどインストールした`bash`を起動してください。

salome_mecaで必要となるパッケージをあらかじめインストールしておきます。

~~~txt
% sudo apt install python libxft2  libxss1 libxmu6 libglu1-mesa
% sudo apt install fonts-noto-cjk fonts-noto-hinted
~~~

これらが終わったら、`salome_meca`をダウンロードします。

~~~txt
% wget http://www.code-aster.org/FICHIERS/SALOME-MECA-2016-LGPL-1.tgz
~~~

ダウンロードした`salome_meca`を展開してインストールします。

~~~txt
% tar xvf SALOME-MECA-2016-LGPL-1.tgz
% ./SMECA_V2016_LGPL.run
Creating salome_meca application in /home/michioga/salome_meca/appli_V2016 ...
chmod: '/home/michioga/.local/share/applications/salome_meca_V2016.desktop' にアクセスできません: そのようなファイルや ディレクトリはありません
Desktop directory not found.

Warning: the directory /mnt/c/Program is in a path variable but does not exist
~~~

色々なWarningが出ますが、無視してください。

プロンプトが戻ってきたらインストール完了です。

## salome_mecaの起動

### vcxsrvの起動

salome_mecaを起動する前に、vcxsrvを起動します。デスクトップにある`VcXsrv`アイコンをダブルクリックしてください。

初めて起動したとき、Windows Firewallから

![14.vcxserv.png](https://qiita-image-store.s3.amazonaws.com/0/81482/df194e2a-a1fd-1548-22ec-57f680799f3d.png)

という警告がでますが「アクセスを許可する(A)」をしてください。

![15.vcxserv.png](https://qiita-image-store.s3.amazonaws.com/0/81482/2356ac8d-af3d-f29f-317f-e16622a510fd.png)

正常に起動すると「X」というアイコンが起動中のタスクの中に現れます。

### salome_mecaの起動

`bash`から`salome_meca`を起動します。

少しおまじないをします。

~~~txt
% export DISPLAY=localhost:0.0
% export LIBGL_ALWAYS_INDIRECT=1
~~~

と打ってから

~~~txt
% cd
% cd salome_meca/appli_V2016
% ./salome &
~~~

とすると`salome_meca`が起動します。

![salome_meca1.png](https://qiita-image-store.s3.amazonaws.com/0/81482/832591cb-220d-fc80-f775-a7efa693e063.png)

![salome_meca2.png](https://qiita-image-store.s3.amazonaws.com/0/81482/bf0b0e43-86bc-170d-dd0f-6ce7b1090af1.png)

安定して動くかは検証していませんが、試してみてください。

また、win32api用のバイナリが必要な場合、[FrontISTR](http://www.multi.k.u-tokyo.ac.jp/FrontISTR/)なども試してみてください。構築済みのバイナリがダウンロードできますし、

[オープンソース大規模構造解析プログラム FrontISTR v4.5のインストール (Windows10 - MinGW-w64)](http://qiita.com/michioga/items/fae993892a808d488648)でビルド方法を紹介しています。