なんで?って感じ。やっぱりWSLだと汚れたときにきれいにできるから、、、
で、「WSLでGNU Octave」の回をなぞって、synapticを起動するところまでやります。
synapticでmingwを検索。
こうなる。
で、まぁまぁかたっぱしからやる。(正直何が正しいのかわからない)
ついでに、
build-essential
unzip
cmake
libtool-bin
もインストールしておく(マジで正直要るのかどうかさっぱりわからん)。
で、とりあえず、なんかやってみる。
matioというMATLABのMATファイルを読み書きするライブラリを作ってみる。ここからmatio-1.5.21.tar.gzをとってきて、~/workふぉるだに入れる(workフォルダは事前に作っておく)。で、
tar zxfv matio-1.5.21.tar.gz
cd matio-1.5.21
./configure CC=i686-w64-mingw32-gcc --host=i686-w64-mingw32
make
で、
こういうの出ますが
libtool: link: i686-w64-mingw32-gcc -I../src -I../getopt -g -O2 -o .libs/test_mat.exe test_mat.o -L../src ../src/.libs/libmatio.dll.a ../getopt/.libs/libgetopt.a -lz -L/usr/local/lib
libtool: error: Could not determine the host path corresponding to
libtool: error: '/home/hoge/work/matio-1.5.21/src/.libs'
libtool: error: Continuing, but uninstalled executables may not work.
libtool: error: Could not determine the host path corresponding to
libtool: error: '/home/hoge/work/matio-1.5.21/src:/home/hoge/work/matio-1.5.21/src/.libs:/usr/local/lib:/usr/local/bin'
libtool: error: Continuing, but uninstalled executables may not work.
~/work/matio-1.5.21/src/.libsにlibmatio-11.dllができている。とりあえず、Dependencies(DependencyWalkerの新しいやつっぽい)で見てみる。解凍して、DependenciesGui.exeを実行。
File->Openでファイル名に「\\wsl$」って入れて掘っていき、libmatio-11.dllを開く。 左のツリーで、一番上のそれらしいやつをつつくと、
ってなるので、いちおうできているっぽい。ちゃんと動くかどうか確認したいけど、make checkは動かない(無理やり動かすこともできるけどエラーばっかりになる)。
で、もう一つやってみる(これも動作確認までしてない(#-∀-))。
ここからlapack-3.10.0.tar.gzをとってくる。~/workにコピーして、
cd ~/work
tar zxfv lapack-3.10.0.tar.gz
cd lapack-3.10.0
cp make.inc.example make.inc
で、ここでWindowsに侵されている初老のおじさんはエクスプローラで\\wsl$から掘っていく。でmake.incを編集。
CC = i686-w64-mingw32-gcc
FC = i686-w64-mingw32-gfortran
AR = i686-w64-mingw32-ar
RANLIB = i686-w64-mingw32-ranlib
と4箇所変更して保存。
で、
make blaslib
ってすると、
librefblas.a
ができる。
i686-w64-mingw32-dllwrap --export-all-symbols librefblas.a -lgfortran -o librefblas.dll
とすると
librefblas.dll
ができる。
Dependenciesで確認すると、
libgfortran-5.dllに依存していることがわかる、、、だめじゃん。
i686-w64-mingw32-dllwrap --export-all-symbols librefblas.a -static -lgfortran -lquadmath -o librefblas.dll
やら
i686-w64-mingw32-dllwrap --export-all-symbols librefblas.a -Wl,-Bstatic,-lgfortran,-lquadmath -o librefblas.dll
やら
試したけどやっぱりlibgfortran-5から逃れられない、、、
と思いきや、どうやらDependenciesで確認するときにはWSLから取り出したほうがいいみたい
で、
i686-w64-mingw32-dllwrap --export-all-symbols librefblas.a -static -lgfortran -lquadmath -o librefblas.dll
で、
librefblas.dllをE:\wsl(紛らわしいけどWSLの外です)にコピーして
いいぞ、、、って当初何しようとしていたんだったっけ?
コメントをお書きください