[Home]Memo/MeCabWin8

Amatubu_Wiki | Memo | RecentChanges | Preferences

MinGW で MeCab をビルドする (Windows 8 / ActivePerl 5.16)

過去にMinGW で MeCab をビルドする という記事を書いたが、その後 OS も Perl のバージョンも変わり、MinGW 自体も更新されたので、メモを改める。
環境、MinGW のインストール、ActivePerl のインストールまでは、MinGW で Text::Kakasi をビルドする と同じ。

MeCab のビルド、インストール

MeCab 0.98 以降は、まだビルドできてないので、古いバージョンだが、0.97 で。

$ cd /path/to/downloaded/binary
$ tar xzf mecab-0.97.tar.gz
$ cd mecab-0.97

--- libmecab.cpp.orig 2007-11-26 02:27:12 +0900
+++ libmecab.cpp 2014-02-15 15:22:51 +0900
@@ -50,19 +50,19 @@
#if defined(_WIN32) && !defined(__CYGWIN__)
HINSTANCE DllInstance = 0;
-#ifdef __cplusplus
+#if defined(__cplusplus) && !defined(__MINGW32__)
extern "C" {
#endif
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID) {
if (!DllInstance) {
DllInstance = hinst;
}
- std::locale loc(std::locale("japanese"),
+ std::locale loc(std::locale("C"),
"C", std::locale::numeric);
std::locale::global(loc);
return TRUE;
}
-#ifdef __cplusplus
+#if defined(__cplusplus) && !defined(__MINGW32__)
}
#endif
#endif

$ ./configure

--- Makefile_orig 2014-02-15 15:13:45 +0900
+++ Makefile 2014-02-15 15:14:21 +0900
@@ -128,7 +128,7 @@
LDFLAGS =
LIBICONV = -liconv
LIBOBJS =
-LIBS = -lstdc++
+LIBS = -liconv -lstdc++
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = cp -p
LTLIBICONV = -liconv

$ make
$ make install

MeCab Perl binding のビルド、インストール

$ cd /path/to/downloaded/binary
$ tar xzf mecab-perl-0.97.tar.gz

--- mecab-perl-0.97/Makefile.PL 2008-02-03 19:13:41 +0900
+++ mecab-perl-0.97_mod/Makefile.PL 2014-02-15 14:43:34 +0900
@@ -1,10 +1,11 @@
use ExtUtils::MakeMaker;
WriteMakefile(
'NAME' => 'MeCab',
- 'CC' => `mecab-config --cxx`,
- 'LD' => `mecab-config --cxx`,
- 'INC' => `mecab-config --cflags`,
- 'LIBS' => `mecab-config --libs`,
- 'VERSION' => `mecab-config --version`,
+ 'CC' => 'g++',
+ 'LD' => 'g++',
+ 'INC' => '-IC:\MinGW\msys\1.0\local\include',
+ 'LIBS' => '-LC:\MinGW\msys\1.0\local\lib -lmecab -liconv -lstdc++',
+ 'LDDLFLAGS' => '-mdll -L"C:\Perl\lib\CORE" -static-libgcc -static-libstdc++',
+ 'VERSION' => '0.97',
'OBJECT' => 'MeCab_wrap.o'
);

$ cd mecab-perl-0.97
$ perl Makefile.PL
$ dmake
$ dmake install

PPD の作成

$ dmake ppd

$ tar czf MeCab.tar.gz blib

辞書と設定ファイル

Windows 用バイナリを利用する場合

ビルドして作成する場合

$ ./configure
$ make
$ make install

成果品

http://amatubu.skr.jp/ppm/MeCab.ppd

MeCab.dll が依存している DLL

Dependency Walker 調べ

Amatubu_Wiki | Memo | RecentChanges | Preferences
This page is read-only | View other revisions
Last edited February 15, 2014 16:09 by Amatubu (diff)
Search:

Copyright (c) 1996-2006 naoki iimura e-mail