Showing revision 1
MinGW で Text::Kakasi をビルドする (Windows 8 / ActivePerl 5.16)
- 過去に[MinGW + MSYS 環境で Text::Kakasi をビルドする] という記事を書いたが、その後 OS も Perl のバージョンも変わり、MinGW 自体も更新されたので、メモを改める。
環境
- Windows 8 Pro
- ActivePerl 5.16.3 (build 1603)
- MinGW (MinGW Installation Manager 0.62-beta-20131004-1 にてインストール)
MinGW のインストール
- MinGW のインストーラを [ダウンロード] する
- インストーラを使って MinGW Installation Manager をインストール
- MinGW Installation Manager が起動したら、「Basic Setup」の「mingw32-base」(執筆時バージョン : 2013072200)、「mingw32-gcc-g++」(同 : 4.8.1-4)、「msys-base」(同 : 2013072300)にチェックを入れてインストール (Installation->Apply Changes)
- MinGW はデフォルトでは C:\MinGW にインストールされる
- MSYS は C:\MinGW\msys\1.0 の下に、「msys.bat」が作成されるので、これで起動できる
- インストールしただけでは gcc.exe 等にパスが通っていないので、「C:\MinGW\bin」を PATH 環境変数に追加しておく
ActivePerl のインストール
- (略) インストーラに従うだけ
Kakasi のビルド、インストール
- kakasi-2.3.4 を [ダウンロード] する
- C:\MinGW\msys\1.0\home\(ユーザ名) が、MSYS のホームディレクトリになるので、そこへコピーする
- $ cd /path/to/downloaded/binary
- $ tar xzf kakasi-2.3.4.tar.gz
- $ cd kakasi-2.3.4
- $ ./configure
- $ make
- $ make install
Text::Kakasi のビルド、インストール
- Text::Kakasi 2.04 を [ダウンロード] する
- Kakasi と同様にコピーする
- $ cd /path/to/downloaded/binary
- $ tar xzf Text-Kakasi-2.04.tar.gz
- ここで、このままだとヘッダとライブラリをなぜか見つけてくれないので、Makefile.PL を修正する
- --- Makefile.PL.orig 2003-05-26 19:42:27 +0900
- +++ Makefile.PL 2013-10-27 01:31:33 +0900
- @@ -6,7 +6,8 @@
- WriteMakefile(
- 'NAME' => 'Text::Kakasi',
- 'VERSION_FROM' => 'Kakasi.pm',
- - 'INC' => '-I/usr/local/include',
- - 'LIBS' => ['-L/usr/local/lib -lkakasi'],
- + 'INC' => '-IC:\MinGW\msys\1.0\local\include',
- + 'LIBS' => ['-LC:\MinGW\msys\1.0\local\lib -lkakasi'],
- + 'LDDLFLAGS' => '-mdll -L"C:\Perl\lib\CORE" -static-libgcc',
- 'DEFINE' => '-DWAKATIGAKI',
- );
- LDDLFLAGS も変更しているが、これをしないと「libgcc_s_dw2-1.dll」に依存したバイナリになってしまうため
- $ cd Text-Kakasi-2.04
- $ perl Makefile.PL
- $ dmake
- $ dmake install
PPD の作成
- $ dmake ppd
- 「Text-Kakasi.ppd」ができるので、CODEBASE HREF="" のところに、これから作るアーカイブの相対パスを入れる(例えば、同じディレクトリに「Text-Kakasi.tar.gz」を作るなら、ファイル名だけで ok)
- $ tar czf Text-Kakasi.tar.gz blib
- 「blib」ディレクトリの中にビルドされた内容が入っているので、これを tar で固める(+ gzip で圧縮する)
はまりどころ
- MinGW をインストールしただけでは C:\MinGW\bin にパスが通っていない
- Text::Kakasi の DLL をビルドする際のオプションに「-static-libgcc」をつけないと「libgcc_s_dw2-1.dll」に依存したバイナリになってしまう
成果品
- [1]
Kakasi.dll が依存している DLL
- Dependency Walker 調べ
- KERNEL32.DLL
- MSVCRT.DLL
- PERL516.DLL