色んなバージョンの ImageMagick をまとめて build (2)

色んなバージョンの ImageMagick をまとめて build - yoyaのメモ の続き

ビルドする

少し修正。ImageMagick-N.N.N-P.tar.gz を伸長して
ImageMagick-N.N.N-P でなく ImageMagick-N.N.N が出来る事があるので。

  • 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 --prefix=$HOME/ImageMagick/$version ; make install)
      rm -rf $dir
    fi
    pre_version=$version
  fi
done
yoya@sakura:~/imagemagick/src$ sh allimagemagickbuild.sh >& log.txt

結果

yoya@sakura:~$ ls  /home/yoya/imagemagick/src/ImageMagick-*.gz | wc
     71      71    3872
yoya@sakura:~$ ls  /home/yoya/ImageMagick/ | wc
     53      53     462

結構、build に失敗してる。

課題

そのままだと build が通らないバージョンがあるので、対処法を考える。

  • configue に失敗する (5.2.6)
configuring ImageMagick 5.2.6
checking build system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized
    • Debian なら /usr/share/libtool/config/config.* をコピーしてくれば OK
Magick++/CoderInfo.h:54: error: extra qualification 'Magick::CoderInfo::' on mem
ber 'CoderInfo'
Magick++/Drawable.h:2409: error: extra qualification 'Magick::PathQuadraticCurve
toArgs::' on member 'PathQuadraticCurvetoArgs'
  • strcpy でコンパイルエラー (5.5.7-36, 6.0.0-7, 6.0.8-3, 6.2.3-6, 6.2.4-6, 6.2.5-5)
Magick++/lib/Geometry.cpp: In member function 'const Magick::Geometry& Magick::G
eometry::operator=(const std::string&)':
Magick++/lib/Geometry.cpp:191: error: 'strcpy' was not declared in this scope
    • 頭の方に #include を入れればOK (atexit の問題が出るので、stdlib.h の対処も)
  • atexitでコンパイルエラー (6.2.6-8, 6.2.7-8, 6.2.8-6, 6.2.8-7, 6.2.8-8, 6.2.9-1, 6.2.9-8, 6.3.0-1, 6.3.0-7, 6.3.1-6, 6.3.2-9, 6.3.3-10, 6.3.4-10)
Magick++/lib/Image.cpp: In function 'void Magick::InitializeMagick(const char*)'
:
Magick++/lib/Image.cpp:3885: error: 'atexit' was not declared in this scope
    • 頭の方に #include を入れればOK

色んなバージョンの ImageMagick をまとめて build (3) - yoyaのメモ に続く

参考