HOME  >  スポンサー広告 >  Ruby >  Windows 7 に Ruby 2.0 x64 を その2 ~RMagick が入らない問題と対策~

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--/--/-- | カテゴリ:スポンサー広告 | トラックバック(-) | コメント(-)

Windows 7 に Ruby 2.0 x64 を その2 ~RMagick が入らない問題と対策~

2014/12/6 追記
RMagick 2.13.4 にて下記の内容は取り込まれています。
2.13.4 をインストールできない場合は、下記の内容とは別の問題ということになります。
この前にひき続き Ruby 2.0 x64 ネタ。
本日は、RMagick。
# 今回はかなり無理矢理で手順がややこしいので、
# 後日 GitHub あたりで、それなりに対応したものを公開するかも……。
2013/12/27 追記
修正したソースを GitHub 上に用意しました。
詳細は→Windows 7 に Ruby 2.0 x64 を その3 ~RMagick が入らない問題と対策2~
手順がだいぶ簡単になっています。

インストール時の 2 つの問題

Ruby 2.0 x64 版で RMagick をインストールするには 2 つの問題があります。
  1. ImageMagick の X11.lib が読み込めない (x64 固有の問題)
  2. ImageMagick の deprecated (非推奨)となった関数、定数が読めない(x86 でも起こる共通の問題)
後者のせいで、ImageMagick の最新版を使用できない状態になっています。
それぞれの問題の対策は以下のとおりです。
  1. X11.lib をリンクさせようとしている箇所を削除!
  2. ImageMagick のソースから deprecated (非推奨)となった関数、定数をひっぱってきてリンクする

前提

[問題 1] ImageMagick の X11.lib が読み込めない

まず、何も考えずに gem install rmagick する。 すると以下のようなエラー。
ERROR:  Error installing rmagick:
        ERROR: Failed to build gem native extension.

    C:/ruby/bin/ruby.exe extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for stdint.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
詳細を確認するために mkmf.log を見ると、cannot find -lX11 というエラーメッセージがひろえます。
c:/ruby/devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lX11
collect2.exe: error: ld returned 1 exit status
公式で配布されている ImageMagick x64 のバイナリですが、X11.lib のみ何故か x86 用です。
なので x64 環境だと、x64 バイナリじゃねーから X11.lib は読めねーよ!と怒られてしまいます。

そもそも RMagick のソース見ても、X11.lib の内容を使用している形跡がないので、
リンクする必要ないです。(なんでリンクしとるの??過去バージョンでは必須だったのかな)
なので、サクッと削除!

[対策 1] X11.lib をリンクさせようとしている箇所を削除!

  $LOCAL_LIBS = '-lCORE_RL_magick_ -lX11' #before
  $LOCAL_LIBS = '-lCORE_RL_magick_'       #after
-lX11 というのを消してあげるだけです。

[問題 2] ImageMagick の deprecated (非推奨)となった関数、定数が読めない

RMagick 2.13.2 は、最新の ImageMagick では非推奨となった関数、定数を使っています。
また ImageMagick 公式サイトで配布されているのバイナリだと、
非推奨の関数、定数は使用できない状態になっている模様。
なので、使用するためには以下 3 つの対策のどれかをする必要があります。
  • 非推奨の関数、定数を使用できる状態にして ImageMagick のライブラリを自前でコンパイル
  • RMagick で native build する時、非推奨の関数、定数が定義されたソースを一緒にコンパイル
  • 非推奨の関数、定数を使用しないよう書きかえる

1 つめは、MFC が必須なので今回はパス。
(Windows Driver Kit をインストールすれば、MFC は用意できますがめんどう。)
2 つめは、ImageMagick のソースから非推奨の関数がまとめられているソースをひっこぬいて
RMagick のビルド時にコンパイル、リンクしてあげる方法で、今回はこれを採用。
# 3 つめは、これがあるべき姿なので後日できたらいいな。

[対策 2] ImageMagick のソースから deprecated (非推奨)となった関数、
定数をひっぱってきてリンクする

ソースの入手先。 ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/
ImageMagick からひっこぬくソース。
  • magick\deprecate.h
  • magick\deprecate.c
上の 2 ファイルを {ruby インストール先}\lib\ruby\gems\2.0.0\gems\rmagick-2.13.2\ext\RMagick\ にコピーしてあげてください。 そしてその中にある 3 ファイル編集します。
#undef MagickExport
#define MagickExport
#undef MAGICKCORE_EXCLUDE_DEPRECATED
#undef _MAGICKCORE_DEPRECATE_H
#include "deprecate.h"
#undef MAGICKCORE_EXCLUDE_DEPRECATED
#undef _MAGICKCORE_DEPRECATE_H
#include "deprecate.h"
その後はビルド、インストールするだけです。
DEVELOPMENT KIT のインストールディレクトリにある msys.bat を実行してください。
コマンドプロンプトが出てきますので、以下のコマンドを入力してビルド、インストールしてください。
cd {ruby インストール先}/lib/ruby/gems/2.0.0/gems/rmagick-2.13.2/
ruby setup.rb
ruby setup.rb install
以上でインストール完了です。
ただし、このままだと gem list --local をしても、RMagick がでてきません。
気になる方は、
{ruby インストール先}\lib\ruby\gems\2.0.0\gems\rmagick-2.13.2\rmagick.gemspec
を下のディレクトリにコピーすれば gem list --local ででてきます。
{ruby インストール先}\lib\ruby\gems\2.0.0\specifications\
2013/12/26 | カテゴリ:Ruby | トラックバック(0) | コメント(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
http://uisteven.blog.fc2.com/tb.php/37-0e28e052

外部リンク

カンパのお願い
公開しているソフトウェアはフリーウェアなので無料でご利用いただけます。 気に入ってくださった方は、Amazon でお買い物をする際に下記のリンクを経由して頂ければ励みになります。

検索BOX・タグ一覧
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。