Кажется, что я испытываю больше затруднений при получении стандартных вещей Unix работать на Snow Leopard, чем какая-либо другая платформа - включая Windows cygwin
Для нескольких прошлых дней я пытался заставить ImageMagick работать на Snow Leopard.
Самый очевидный путем, Порты Mac, сбои:
tppllc-Mac-Pro:ImageMagick-sl swirsky$ sudo port install imagemagick
---> Computing dependencies for p5-locale-gettext
---> Configuring p5-locale-gettext
Error: Target org.macports.configure returned: configure failure: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_perl_p5-locale-gettext/work/gettext-1.05" && /opt/local/bin/perl Makefile.PL INSTALLDIRS=vendor " returned error 2
Command output: checking for gettext... no
checking for gettext in -I/opt/local/include -arch i386 -L/opt/local/lib -lintl...gettext function not found. Please install libintl at Makefile.PL line 18.
no
Error: Unable to upgrade port: 1
Error: Unable to execute port: upgrade xorg-libXt failed
Before reporting a bug, first run the command again with the -d flag to get complete output.
tppllc-Mac-Pro:ImageMagick-sl swirsky$
Не желая провести еще два дня, выясняя, почему мой libintl не имеет функции "gettext", я попробовал другой маршрут: сценарий упоминается здесь: http://github.com/masterkain/ImageMagick-sl
Этот сценарий загружает и устанавливает ImageMagic независимо от проблем MacPorts
tppllc-Mac-Pro:ImageMagick-sl swirsky$ /usr/local/bin/convert
dyld: Library not loaded: /opt/local/lib/libiconv.2.dylib
Referenced from: /opt/local/lib/libfontconfig.1.dylib
Reason: Incompatible library version: libfontconfig.1.dylib requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0
Trace/BPT trap
Это загружает все и компилирует прекрасный, но перестало работать, когда я пытаюсь выполнить его с сообщением выше.
Таким образом, теперь я - два шага далеко от ImageMagick, пытаясь получить более новый libiconv на моей машине.
Я загрузил последний libiconv, скомпилированный, и создал его. Я поместил получающуюся библиотеку в/opt/local/lib, и я все еще получаю то же сообщение об ошибке:
tppllc-Mac-Pro:.libs swirsky$ sudo mv libiconv.2.dylib /opt/local/lib/libiconv.2.dylib
tppllc-Mac-Pro:.libs swirsky$ convert
dyld: Library not loaded: /opt/local/lib/libiconv.2.dylib
Referenced from: /opt/local/lib/libfontconfig.1.dylib
Reason: Incompatible library version: libfontconfig.1.dylib requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0
Trace/BPT trap
Теперь вот что-то интересное. Сообщение об ошибке показывает, что смотрит в/opt/local/lib/libiconv.2.dylib.
otools-L показывает, что это действительно реализует 8.0.0:
tppllc-Mac-Pro:.libs swirsky$ otool -L /opt/local/lib/libiconv.2.dylib
/opt/local/lib/libiconv.2.dylib:
/usr/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.0)
tppllc-Mac-Pro:.libs swirsky$
И в придачу я установил DYLD_LIBRARY_PATH, чтобы удостовериться, что этот каталог является тем для динамических библиотек.
Таким образом даже при том, что у меня действительно есть библиотека, которая обеспечивает 8.0.0, она рассматривается как 7.0.0! Какие-либо идеи, почему это произошло бы?
Таким образом, вот мой вопрос: действительно ли возможно заставить ImageMagick работать на Snow Leopard OSX? Есть ли любые двоичные дистрибутивы, которым испекли статические библиотеки в том, таким образом, я не должен волноваться о них, выпускают /
Мой Google показал до нескольких обращений, и первый или второй имел ссылку на двоичный файл .
Я, наконец, смог получить достаточно согласованную установку "macports", чтобы установить и запустить imagemagick. Мне пришлось вручную удалить мои / opt / local / directores, в которых находились файлы, и очистить некоторые другие зависимости.
Похоже, что динамический компоновщик втягивает в систему libiconv.2.dylib
(с версией совместимости 7.0.0). Не видя всего процесса сборки, трудно понять, почему это так, но я с подозрением отношусь к вашей сборке libiconv; обратите внимание, что в следующей ошибке:
tppllc-Mac-Pro:.libs swirsky$ otool -L /opt/local/lib/libiconv.2.dylib
/opt/local/lib/libiconv.2.dylib:
/usr/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.0)
ваш libiconv.2.dylib
, похоже, думает, что его путь установки - / usr / local / lib
, а не / opt / локальный / lib
. Вероятно, поэтому динамический компоновщик не находит его; он ищет его в / usr / local / lib
, но не находит, и возвращается к системной библиотеке в / usr / lib
. Попробуйте установить путь установки для libiconv.2.dylib
, чтобы команды загрузки указывали компоновщику искать его в / opt / local / lib
, и это может решить проблему. .
Я видел эту точную ошибку с этой конкретной библиотекой в нескольких ситуациях. В каждом случае это был случай, когда либо человек, либо сценарий, который они использовали, устанавливали переменную DYLD_LIBRARY_PATH.
Убедитесь, что эта переменная не установлена, поскольку она заменяет загрузку явно связанных библиотек библиотеками по этому пути.
Если необходимо установить DYLD_ *, используйте более разумный DYLD_FALLBACK_LIBRARY_PATH. Которая сначала попытается загрузить явно связанные библиотеки, а затем откатиться к объявленным пользователем.
Я заметил, что в вашей первоначальной сборке не было библиотеки gettext в macports. Поэтому убедитесь, что они установлены.