色んなバージョンの ImageMagick をまとめて build (3)
色んなバージョンの ImageMagick をまとめて build (2) - yoyaのメモ の続き
ソース
- 粒度がバラバラだけど、入手出来たバージョンのソースを全部 ftp サイトに置きました。基本 patch 番号は最新のみだけど、たまに古い patch 番号も混ざってます。ご愛嬌で。
- 古いソースはこの二ヶ所から取得してます。
ビルドする
ImageMagick-*.tar.gz がまとめて置かれているディレクトリで、allimagemagickbuild.sh を実行します。
- allimagemagickbuild.sh
for file in `ls -r ImageMagick*.tar.*` ; do version=`echo $file | sed 's/ImageMagick-\(.*\).tar\(.*\)/\1/'` if [ "$pre_version" != "$version" ] ; then echo === $file === tar xf $file dir="ImageMagick-$version" if ! [ -d $dir ] ; then version2=`echo $file | sed 's/ImageMagick-\(.*\)-[0-9]\+.tar\(.*\)/\1/'` dir="ImageMagick-$version2"; fi if [ -d $dir ] ; then (cd $dir ; ./configure --without-perl --without-magick-plus-plus --prefix=$HOME/ImageMagick/$version ; make install) rm -rf $dir fi pre_version=$version fi done
yoya@sakura:~/imagemagick/src$ sh allimagemagickbuild.sh >& log.txt
C++ の問題で build 出来ないバージョンが多いけど、よく考えたら Magick++ API は要らないので、 --without-magick-plus-plus を付ける事にしました。(昨日との違い)
結果
yoya@sakura:~$ ls /home/yoya/imagemagick/src/ImageMagick-*.gz | wc 71 71 3872 yoya@sakura:~$ ls /home/yoya/ImageMagick/ | wc yoya@sakura:~/ImageMagick$ ls | wc 69 69 592
ImageMagick-5.2.6.tar.gz, ImageMagick-6.0.8-3.tar.gz で失敗してる。
手動対処
- ImageMagick-5.2.6.tar.gz
configuring ImageMagick 5.2.6 checking build system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized
-
- /usr/share/libtool/config/config.* をコピれば OK
yoya@sakura:~/imagemagick/src/ImageMagick-5.2.6$ cp /usr/share/libtool/config/config.* . yoya@sakura:~/imagemagick/src/ImageMagick-5.2.6$ ./configure --without-perl --without-magick-plus-plus --prefix=$HOME/ImageMagick/5.2.6
- ImageMagick-6.0.8-3.tar.gz
Magick++/lib/Geometry.cpp:191: error: 'strcpy' was not declared in this scope make[1]: *** [Magick++/lib/Geometry.lo] エラー 1
-
- 頭に #include
を置いてみる
- 頭に #include
gcc -DHAVE_CONFIG_H -I../ -I.. -I../magick -I/home/yoya/ImageMagick/5.2.6/include -g -O2 -c png.c -Wp,-MD,.deps/png.TPlo -o png.o png.c:1050: error: static declaration of 'png_IM_free' follows non-static declaration png.c:1040: note: previous declaration of 'png_IM_free' was here
Magick++/lib/Image.cpp: In function 'void Magick::InitializeMagick(const char*)': Magick++/lib/Image.cpp:3732: error: 'atexit' was not declared in this scope
-
- 頭に #include
を入れる
- 頭に #include
yoya@sakura:~/imagemagick/src/ImageMagick-6.0.8-3$ echo '#include <string.h>' | cat - Magick++/lib/Geometry.cpp > yoya.tmp ; mv yoya.tmp Magick++/lib/Geometry.cpp yoya@sakura:~/imagemagick/src/ImageMagick-6.0.8-3$ echo '#include <stdlib.h>' | cat - Magick++/lib/Image.cpp > yoya.tmp ; mv yoya.tmp Magick++/lib/Image.cpp yoya@sakura:~/imagemagick/src/ImageMagick-6.0.8-3$ ./configure --without-perl --without-magick-plus-plus --prefix=$HOME/ImageMagick/6.0.8-3
うーむ。--without-magick-plus-plus が効いてないみたい。だけど対処出来たのでいいや。
結果
yoya@sakura:~/ImageMagick$ ls /home/yoya/imagemagick/src/ImageMagick-*.tar.gz | wc 71 71 3872 yoya@sakura:~/ImageMagick$ ls | wc 71 71 606 yoya@sakura:~/ImageMagick$ ls -C | head -2 4.2.9 6.2.5-5 6.3.0-7 6.3.8-11 6.4.5-9 6.5.4-10 6.6.1-10 6.7.0-10 5.2.6 6.2.6-8 6.3.1-6 6.3.9-10 6.4.6-9 6.5.5-10 6.6.2-10 6.7.1-10 yoya@sakura:~/ImageMagick$ ls 6.0.8-3/bin/ Magick++-config Wand-config compare conjure display import montage Magick-config animate composite convert identify mogrify yoya@sakura:~/ImageMagick$ ./6.0.8-3/bin/identify -version Version: ImageMagick 6.0.8 10/22/12 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2004 ImageMagick Studio LLC yoya@sakura:~/ImageMagick$