CygwinでMinGW-w64を使いWindowsネイティブなバイナリを作成
通常,Cygwinのgccやgfortranを使ってソースコードをコンパイルすると,コンパイルしてできたプログラムの実行にcygwin1.dllが必要となるバイナリが作成される。このままだと他者に配布しにくい。しかし,MinGW-w64のgccを使えばその制限がなくなるらしい。
32bit版のCygwinでは以下のパッケージをインストールすれば対応する32bit版のバイナリを作成できるコンパイラがインストールされる。
i686-w64-mingw32-gcc
ただし,mingw-w64のコンパイラを使うにはその都度上記の長いコマンドを入力しないといけない。これを回避するために,mingw- w64のコンパイラに以下のようにシンボリックリンクを貼る。
for compiler in gcc gfortran g++
do
ln -sf /usr/bin/i686-w64-mingw32-$compiler.exe ~/.local/bin/$compiler.exe
done
事前に~/.local/bin
にPATHを通しておく。これにより標準のgcc, gfortran, g++がmingw-w64のコンパイラとなり,cygwinに依存しないバイナリを作成できる。
なお,より環境に依存しないバイナリを作成するには,コンパイルオプションに-static
をつけるとよい。これを付けないと,コンパイル時にリンクされるライブラリが実行時にも必要となる。たとえば,gfortranでコンパイルしたプログラムだと実行時にlibgfortranが必要となる。
参考:Cygwinでcygwin1.dllフリーなWindows実行ファイルを作る (MinGW-w64) – wltの日記