Image::Magick(PerlMagick)がインストールできない


ImageMagickをソースからインストールした環境でImage::Magick(PerlMagick)がうまくインストールできない現象が発生したので、備忘録としてメモ。というのも某先輩から「また将来、エラーになったときにgoogleで検索、そこで解決方法がヒットするようにお前のブログに書いておけ」というお達しがあったという噂もあったり、なかったり。

インストールしたImageMagickのバージョンは6.8.1-9(ImageMagick-6.8.1-9.tar.gz)。configureのオプションは特につけてないです。

次にcpanでImage::Magickをインストール。

$ cpan -i Image::Magick …略… Magick.xs:60:31: error: magick/MagickCore.h: そのようなファイルやディレクトリはありません Magick.xs:167: error: expected specifier-qualifier-list before ‘MagickRealType’ Magick.xs:188: error: expected specifier-qualifier-list before ‘ImageInfo’ …略… Magick.xs:2382: 警告: implicit declaration of function ‘NewSplayTree’ Magick.xs:2383: 警告: statement with no effect make: *** [Magick.o] エラー 1 JCRISTY/PerlMagick-6.77.tar.gz /usr/bin/make -- NOT OK Running make test Can't test without successful make Running make install Make had returned bad status, install seems impossible

というわけでエラー、「MagickCore.h」が見つからないらしい。ここでcpanで入れるのを諦めて、直接PerlMagickを公式サイトからゲットしてインストールする事に。

$ tar zxvf PerlMagick-6.77.tar.gz $ cd ./PerlMagick-6.77 $ perl Makefile.PL INC="-I/usr/local/include/ImageMagick" LIBS="-L/usr/local/lib" Checking if your kit is complete... Looks good Writing Makefile for Image::Magick Writing MYMETA.yml and MYMETA.json

Makefileを作るときにINC等を指定してMagickCore.hを見つけられるようにしてあげる。エラーにならずにMakefile作れたみたいなので続けてmake開始。

$ make cp Magick.pm blib/lib/Image/Magick.pm AutoSplitting blib/lib/Image/Magick.pm (blib/lib/auto/Image/Magick) /usr/bin/perl /usr/share/perl5/ExtUtils/xsubpp -typemap /usr/share/perl5/ExtUtils/typemap -typemap typemap Magick.xs > Magick.xsc && mv Magick.xsc Magick.c gcc -c -I/usr/local/include/ImageMagick -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fopenmp -g -O2 -Wall -pthread -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION=\"6.77\" -DXS_VERSION=\"6.77\" -fPIC "-I/usr/lib64/perl5/CORE" -D_LARGE_FILES=1 -DHAVE_CONFIG_H Magick.c /usr/local/include/ImageMagick/magick/MagickCore.h:29 から include されたファイル中, Magick.xs:60 から: /usr/local/include/ImageMagick/magick/magick-config.h:29:3: 警告: #warning "you should set MAGICKCORE_QUANTUM_DEPTH to sensible default set it to configure time default" /usr/local/include/ImageMagick/magick/magick-config.h:30:3: 警告: #warning "this is an obsolete behavior please fix your makefile" /usr/local/include/ImageMagick/magick/magick-config.h:52:3: 警告: #warning "you should set MAGICKCORE_HDRI_ENABLE to sensible default set it to configure time default" /usr/local/include/ImageMagick/magick/magick-config.h:53:3: 警告: #warning "this is an obsolete behavior please fix yours makefile" Running Mkbootstrap for Image::Magick () chmod 644 Magick.bs rm -f blib/arch/auto/Image/Magick/Magick.so gcc -L../magick/.libs -lMagickCore -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -L/usr/lib Magick.o -o blib/arch/auto/Image/Magick/Magick.so \ \ /usr/bin/ld: cannot find -lMagickCore collect2: ld はステータス 1 で終了しました make: *** [blib/arch/auto/Image/Magick/Magick.so] エラー 1

はい、またエラー。今度はMagickCoreを見つけられない様子。ImageMagickはちゃんとインストールしてるはずなのになと、/usr/local/lib以下を調べる。

$ ls -1 /usr/local/lib/ | grep libMagickCore libMagickCore-Q16.a libMagickCore-Q16.la libMagickCore-Q16.so libMagickCore-Q16.so.7 libMagickCore-Q16.so.7.0.0

MagickCoreはあるが、"-Q16"という文字列がついている。何ぞコレ。調べるとQ16はビット深度(bit depth)でデフォルトが16とのこと。「昔からこんなんだったっけ?」と思いつつ、おもむろにシンボリックリンク作戦に出る。

rootになって、

# cd /usr/local/lib # ln -s libMagickCore-Q16.so.7.0.0 libMagickCore.so

という感じでシンボリックリンクを作る。インストールに再チャレンジ。

$ make clean $ perl Makefile.PL INC="-I/usr/local/include/ImageMagick" LIBS="-L/usr/local/lib" $ make $ su # make install # exit $

いけた。コンパイル通ってインストールまでいけた。あとperl側で簡単な確認。

$ perl -MImage::Magick -e 'print $Image::Magick::VERSION' 6.77

なんかバージョンも表示されたしなんかいけそうな気がする。で、この状態で動作確認は某先輩に丸投げしているという。もしこの方法でうまく動かなかったらまたここに追記します。

作成日:2013/01/21 02:35:42
トラックバック  ※トラックバックは承認後に表示されます。
TrackbackURL:このページのトラックバックの受付は終了しています。

トラックバックはありません。
コメント
名前:

タイトル:

コメント: