rroonga > rroonga, groonga 1.1.0 Windows向け実験メモ

「rroonga/rroonga, groonga 1.1.0 Windows向け実験メモ」の編集履歴(バックアップ)一覧はこちら

rroonga/rroonga, groonga 1.1.0 Windows向け実験メモ」(2011/02/16 (水) 00:57:27) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* rroonga.1.0 Windows向け実験メモ ** (1) ktouさんの作ったgemを実験 インストールには成功しましたが、試しに自作アプリのgrenwebを起動しようとするとエラーが起きました。 ↓みたいなエラーを吐きます(mecab.dllが入ってないから?) #highlight(){ Groonga::InvalidArgument at / invalid argument: cannot open shared object file: No such file or directory: <c:\app\ruby187-mingw32\lib\groonga\plugins/tokenizers/mecab.dll> an: #<Groonga::Database id: <nil>, name: (anonymous), path: <c:/users/ongaeshi/grendb/grendb.db>, domain: (nil), range: (nil), flags: <>> plugin.c:291: grn_plugin_register_by_path() Ruby ./database.rb: in open, line 28 Web GET localhost/ } また、gemファイルのサイズが私が手元で作ったgemよりも10倍ほど大きいようです。 私の方が4MBで、クロスコンパイルしたものは35MB位。 ** (2) configureオプションを変更 groonga make時のオプションを変更しました。 #highlight(){ (旧)./configure CC='i686-w64-mingw32-gcc' CFLAGS='-g -O0 -mno-cygwin' prefix='/c/users/ongaeshi/work/rroonga/vendor/local' i386-pc-mingw32 (新)./configure --host=i686-w64-mingw32 --prefix='/c/users/ongaeshi/work/rroonga/vendor/local' } coinfigure設定 #highlight(){ groonga 1.1.0 configuration: ----------------------- Compiler: i686-w64-mingw32-gcc CFLAGS: -g -O2 -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Wformat=2 -Wstrict-aliasing=2 -Wdisabled-optimization -Wfloat-equal -Wpointer-arith -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align -Wredundant-decls Libraries: -lm -ladvapi32 -lws2_32 Paths: Install path prefix: /c/users/ongaeshi/work/rroonga/vendor/local Tokenizers: MeCab: no Libraries: ZeroMQ: no libevent: no MessagePack: no } コンパイル自体は成功!! が、残念ながらpthreadへの依存は切れませんでした・・・。 なので、lib/Makefileや、src/Makefileへのパッチは継続で当てています。 以下はエラー時のログを抜粋したものです。 #highlight(){ /bin/sh ../libtool --tag=CC --mode=link i686-w64-mingw32-gcc -fno-strict-aliasing -g -O2 -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Wformat=2 -Wstrict-aliasing=2 -Wdisabled-optimization -Wfloat-equal -Wpointer-arith -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align -Wredundant-decls -version-info 0:0:0 -no-undefined -mwindows -o libgroonga.la -rpath /c/users/ongaeshi/work/rroonga/vendor/local/lib io.lo str.lo nfkc.lo snip.lo query.lo store.lo com.lo ql.lo scm.lo ctx.lo hash.lo db.lo pat.lo ii.lo token.lo proc.lo expr.lo util.lo plugin.lo output.lo geo.lo -lm -ladvapi32 -lws2_32 libtool: link: rm -fr .libs/libgroonga.a .libs/libgroonga.dll.a .libs/libgroonga.la .libs/libgroonga.lai libtool: link: i686-w64-mingw32-gcc -shared .libs/io.o .libs/str.o .libs/nfkc.o .libs/snip.o .libs/query.o .libs/store.o .libs/com.o .libs/ql.o .libs/scm.o .libs/ctx.o .libs/hash.o .libs/db.o .libs/pat.o .libs/ii.o .libs/token.o .libs/proc.o .libs/expr.o .libs/util.o .libs/plugin.o .libs/output.o .libs/geo.o -ladvapi32 -lws2_32 -mwindows -o .libs/libgroonga-0.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libgroonga.dll.a Creating library file: .libs/libgroonga.dll.a.libs/io.o: In function `grn_open': /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/io.c:1662: undefined reference to `__imp__pthread_mutex_init' /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/io.c:1662: undefined reference to `__imp__pthread_mutex_init' .libs/io.o: In function `grn_pread': /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/io.c:1764: undefined reference to `__imp__pthread_mutex_lock' /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/io.c:1776: undefined reference to `__imp__pthread_mutex_unlock' . . . /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/db.c:131: undefined reference to `__imp__pthread_mutex_init' .libs/db.o: In function `grn_db_create': /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/db.c:79: undefined reference to `__imp__pthread_mutex_init' collect2: ld returned 1 exit status make[2]: *** [libgroonga.la] Error 1 make[2]: Leaving directory `/c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0' make: *** [all] Error 2 } ※ CFLAGSに -mno-cygwin を追加した方がいいような気もしたのですが、cygwin1.dllへの依存はなさそうなので様子を見ます。 ** (3) まとめ 実は、以前の私の設定は gcc -O0 の最適化無しになっていました。 今後は -O2 が入った新しいconfigureでコンパイルしようと思います。 クロスコンパイル版は動かなかったので、 今回は私が手元で作ったものをgem pushしようと思います。 --------------------------------------------------
* rroonga.1.0 Windows向け実験メモ ** (1) Linuxでクロスコンパイルしたgemの実験 インストールには成功しましたが、試しに自作アプリのgrenwebを起動しようとするとエラーが起きました。 ↓みたいなエラーを吐きます(mecab.dllが入ってないから?) #highlight(){ Groonga::InvalidArgument at / invalid argument: cannot open shared object file: No such file or directory: <c:\app\ruby187-mingw32\lib\groonga\plugins/tokenizers/mecab.dll> an: #<Groonga::Database id: <nil>, name: (anonymous), path: <c:/users/ongaeshi/grendb/grendb.db>, domain: (nil), range: (nil), flags: <>> plugin.c:291: grn_plugin_register_by_path() Ruby ./database.rb: in open, line 28 Web GET localhost/ } また、gemファイルのサイズが私が手元で作ったgemよりも10倍ほど大きいようです。 私の方が4MBで、クロスコンパイルしたものは35MB位。 ** (2) configureオプションを変更 groonga make時のオプションを変更しました。 #highlight(){ (旧)./configure CC='i686-w64-mingw32-gcc' CFLAGS='-g -O0 -mno-cygwin' prefix='/c/users/ongaeshi/work/rroonga/vendor/local' i386-pc-mingw32 (新)./configure --host=i686-w64-mingw32 --prefix='/c/users/ongaeshi/work/rroonga/vendor/local' } coinfigure設定 #highlight(){ groonga 1.1.0 configuration: ----------------------- Compiler: i686-w64-mingw32-gcc CFLAGS: -g -O2 -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Wformat=2 -Wstrict-aliasing=2 -Wdisabled-optimization -Wfloat-equal -Wpointer-arith -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align -Wredundant-decls Libraries: -lm -ladvapi32 -lws2_32 Paths: Install path prefix: /c/users/ongaeshi/work/rroonga/vendor/local Tokenizers: MeCab: no Libraries: ZeroMQ: no libevent: no MessagePack: no } コンパイル自体は成功!! が、残念ながらpthreadへの依存は切れませんでした・・・。 なので、lib/Makefileや、src/Makefileへのパッチは継続で当てています。 以下はエラー時のログを抜粋したものです。 #highlight(){ /bin/sh ../libtool --tag=CC --mode=link i686-w64-mingw32-gcc -fno-strict-aliasing -g -O2 -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Wformat=2 -Wstrict-aliasing=2 -Wdisabled-optimization -Wfloat-equal -Wpointer-arith -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align -Wredundant-decls -version-info 0:0:0 -no-undefined -mwindows -o libgroonga.la -rpath /c/users/ongaeshi/work/rroonga/vendor/local/lib io.lo str.lo nfkc.lo snip.lo query.lo store.lo com.lo ql.lo scm.lo ctx.lo hash.lo db.lo pat.lo ii.lo token.lo proc.lo expr.lo util.lo plugin.lo output.lo geo.lo -lm -ladvapi32 -lws2_32 libtool: link: rm -fr .libs/libgroonga.a .libs/libgroonga.dll.a .libs/libgroonga.la .libs/libgroonga.lai libtool: link: i686-w64-mingw32-gcc -shared .libs/io.o .libs/str.o .libs/nfkc.o .libs/snip.o .libs/query.o .libs/store.o .libs/com.o .libs/ql.o .libs/scm.o .libs/ctx.o .libs/hash.o .libs/db.o .libs/pat.o .libs/ii.o .libs/token.o .libs/proc.o .libs/expr.o .libs/util.o .libs/plugin.o .libs/output.o .libs/geo.o -ladvapi32 -lws2_32 -mwindows -o .libs/libgroonga-0.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libgroonga.dll.a Creating library file: .libs/libgroonga.dll.a.libs/io.o: In function `grn_open': /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/io.c:1662: undefined reference to `__imp__pthread_mutex_init' /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/io.c:1662: undefined reference to `__imp__pthread_mutex_init' .libs/io.o: In function `grn_pread': /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/io.c:1764: undefined reference to `__imp__pthread_mutex_lock' /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/io.c:1776: undefined reference to `__imp__pthread_mutex_unlock' . . . /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/db.c:131: undefined reference to `__imp__pthread_mutex_init' .libs/db.o: In function `grn_db_create': /c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib/db.c:79: undefined reference to `__imp__pthread_mutex_init' collect2: ld returned 1 exit status make[2]: *** [libgroonga.la] Error 1 make[2]: Leaving directory `/c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0/lib' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/c/users/ongaeshi/work/rroonga/vendor/groonga-1.1.0' make: *** [all] Error 2 } ※ CFLAGSに -mno-cygwin を追加した方がいいような気もしたのですが、cygwin1.dllへの依存はなさそうなので様子を見ます。 ** (3) まとめ 実は、以前の私の設定は gcc -O0 の最適化無しになっていました。 今後は -O2 が入った新しいconfigureでコンパイルしようと思います。 クロスコンパイル版は動かなかったので、 今回は私が手元で作ったものをgem pushしようと思います。 --------------------------------------------------

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。