Изображение :: Magick on Strawberry Perl 5.12 - PullRequest
3 голосов
/ 05 марта 2012

Я пытаюсь установить Image::Magick на Strawberry Perl 5.12 на Windows XP, но он не находит модули ImageMagick при генерации make-файла. Make также выбрасывает множество ошибок компилятора.

Я сделал именно то, что написано в readme Image :: Magic :

Installation - Win32 Strawberry perl

    On Win32 Strawberry Perl the preferred way of installing PerlMagick is the
    following:

    1) Download and install ImageMagick Windows binaries from
    http://www.imagemagick.org/script/binary-releases.php#windows

    2) You HAVE TO choose dynamic (DLL) ImageMagick binaries.  Note: it is not
    possible to mix 32/64bit binaries of Perl and ImageMagick

    3) During installation select that you want to install ImageMagick's
    development files (libraries+headers)

    4) You NEED TO have ImageMagick's directory in your PATH.  Note: we are
    checking the presence of convert.exe or identify.exe tools

    5) You might need Visual C++ Redistributable Package installed on your
    system. See instructions on ImageMagick's Binary Release webpage.

    6) If you have all prerequisites 1)...5) you can simply install
    ImageMagick by running: cpan -i Image::Magick

И я получаю это:

################################### WARNING! ###################################
# It seems that you are trying to install Perl::Magick on a MS Windows box with
# perl + gcc compiler (e.g. Strawberry Perl), however we cannot find ImageMagick
# binaries installed on your system.
#
# Please check the following prerequisites:
#
# 1) You need to have installed ImageMagick Windows binaries from
#    http://www.imagemagick.org/script/binary-releases.php#windows
#
# 2) We only support dynamic (DLL) ImageMagick binaries
#    note: it is not possible to mix 32/64-bit binaries of perl and ImageMagick
#
# 3) During installation select that you want to install ImageMagick's
#    development files (libraries+headers)
#
# 4) You also need to have ImageMagick's directory in your PATH
#    note: we are checking the presence of convert.exe and/or identify.exe tools
#
# 5) You might need Visual C++ Redistributable Package installed on your system
#    see instructions on ImageMagick's Binary Release webpage
#
# We are gonna continue, but chances for successful build are very low!
################################################################################
Note (probably harmless): No library found for -lMagickCore
Note (probably harmless): No library found for -lmoldname
Note (probably harmless): No library found for -lkernel32
Note (probably harmless): No library found for -luser32
Note (probably harmless): No library found for -lgdi32
Note (probably harmless): No library found for -lwinspool
Note (probably harmless): No library found for -lcomdlg32
Note (probably harmless): No library found for -ladvapi32
Note (probably harmless): No library found for -lshell32
Note (probably harmless): No library found for -lole32
Note (probably harmless): No library found for -loleaut32
Note (probably harmless): No library found for -lnetapi32
Note (probably harmless): No library found for -luuid
Note (probably harmless): No library found for -lws2_32
Note (probably harmless): No library found for -lmpr
Note (probably harmless): No library found for -lwinmm
Note (probably harmless): No library found for -lversion
Note (probably harmless): No library found for -lodbc32
Note (probably harmless): No library found for -lodbccp32
Note (probably harmless): No library found for -lcomctl32
Writing Makefile for Image::Magick
Writing MYMETA.yml and MYMETA.json

Но двоичные файлы ImageMagick установлены и в переменной пути.

Как мне заставить это работать?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

У меня есть решение!

Проблема в том, что Makefile.pl ищет двоичные файлы в неправильных каталогах.

  1. Получите последнюю версию пакета ImageMagick. нажмите
  2. Распакуйте его и перейдите в папку PerlMagick
  3. открыть Makefile.pl в редакторе.
  4. Посмотрите на первый блок foreach:

foreach my $line (split '\n', $conf) {</p> <pre><code>if ($line =~ /^Path:\s+(.*)/) { my ($vol,$dir,$file) = splitpath($1); next unless $dir; my $dirpath = catpath( $vol, $dir); my (@l,@b,@i) = ( (),(),() ); # try to detect 'lib' dir push @l, catfile($dirpath,'..','lib'); push @l, catfile($dirpath,'..','..','lib'); push @l, catfile($dirpath,'..','..','..','lib'); foreach (@l) { push @libdir, $_ if (-d $_) }; # try to detect 'bin' dir push @b, catfile($dirpath,'..'); push @b, catfile($dirpath,'..','bin'); push @b, catfile($dirpath,'..','..'); push @b, catfile($dirpath,'..','..','bin'); push @b, catfile($dirpath,'..','..','..'); push @b, catfile($dirpath,'..','..','..','bin'); foreach (@b) { push @bindir, $_ if (-e "$_/convert.exe" || -e "$_/identify.exe") }; # try to detect 'include' dir push @i, catfile($dirpath,'..','include'); push @i, catfile($dirpath,'..','include','ImageMagick'); push @i, catfile($dirpath,'..','..','include'); push @i, catfile($dirpath,'..','..','include','ImageMagick'); push @i, catfile($dirpath,'..','..','..','include'); push @i, catfile($dirpath,'..','..','..','include','ImageMagick'); foreach (@i) { push @incdir, $_ if (-e "$_/magick/MagickCore.h") }; }

}

Сценарий получает местоположение установки IM из% PATH% и ищет папки bin, lib и include. Он выглядит везде, кроме своего фактического местоположения.

Так что вам просто нужно добавить эти:

# try to detect 'lib' dir
push @l, catfile($dirpath,'lib');
...
# try to detect 'bin' dir
push @b, catfile($dirpath);
...
# try to detect 'include' dir
push @i, catfile($dirpath,'include');
...

После этого вы можете выполнить perl Makefile.pl, и он будет правильно генерировать make-файл. Тогда просто скажите dmake и dmake install и все будет хорошо.

Надеюсь, это когда-нибудь поможет.

1 голос
/ 30 ноября 2013

Вы также можете попробовать менее болезненный метод - менеджер пакетов Perl, который поставляется с Strawberry Perl.

Начните с команды "ppm", затем введите "install Image-Magick". 30 секунд и все готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...