Memo/Text-Kakasi
Amatubu_Wiki
|
Memo
|
RecentChanges
|
Preferences
Difference (from prior major revision)
(no other diffs)
Changed: 86c86
:
[1]
:
http://amatubu.skr.jp/ppm/Text-Kakasi.ppd
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」に依存したバイナリになってしまう
成果品
http://amatubu.skr.jp/ppm/Text-Kakasi.ppd
Kakasi.dll が依存している DLL
Dependency Walker 調べ
KERNEL32.DLL
MSVCRT.DLL
PERL516.DLL