2010-03-23 12 views
6

Parece que tengo más problemas para ejecutar cosas estándar de Unix en Snow Leopard que en cualquier otra plataforma, incluyendo Windows cygwinImageMagick en Mac OSX Snow Leopard. ¿Hay alguna forma de hacerlo compilar y ejecutar?

Durante los últimos días, he intentado que ImageMagick se ejecute en Snow Leopardo.

La manera más obvia, Mac Puertos, falla:

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$ 

No queriendo pasar otros dos días a averiguar por qué mi libintl no tiene una función "gettext", probé una ruta diferente: la guión mencionado aquí: http://github.com/masterkain/ImageMagick-sl

descargas este script y se instala un ImageMagic independientemente DarwinPorts emite

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 

Es capaz de descargar todo y compila bien, pero falla cuando intento ejecutarlo, con el mensaje de arriba.

Así que ahora estoy a dos pasos de ImageMagick, tratando de obtener un libiconv más nuevo en mi máquina.

Descargué el último libiconv, lo compilé y lo construí. Pongo la biblioteca resultante en/opt/local/lib, y sigo teniendo el mismo mensaje de error:

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 

Ahora aquí hay algo interesante. El mensaje de error muestra que está buscando en /opt/local/lib/libiconv.2.dylib.

otools -L muestra que esto no implementar 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$ 

Y, por si acaso, me puse la DYLD_LIBRARY_PATH para asegurarse de que este directorio es el de las librerías dinámicas.

Así que, aunque tengo una biblioteca que proporciona 8.0.0, se está viendo como 7.0.0. ¿Alguna idea de por qué esto sucedería?

Así que aquí está mi pregunta: ¿Es posible hacer que ImageMagick se ejecute en OSX Snow Leopard? ¿Hay alguna distribución binaria que tenga bibliotecas estáticas al horno así que no tengo que preocuparme por este problema/

Respuesta

0

Mi google apareció algunos éxitos, y el primero o el segundo tenía un link to the binary.

+0

Gracias! Vi esa página, pero la perdí porque primero recomendaba usar MacPorts. La distribución binaria parece funcionar. (Aunque preferiría uno que tuviera las bibliotecas vinculadas estáticamente. Cambiar la variable de entorno DYLD_LIBRARY_PATH rompe otras cosas ...) –

+5

La gente de ImageMagick lamentablemente ELIMINARon el binario de trabajo, y en su lugar pusieron un binario de solo León en su sitio web . Esta respuesta ya no es correcta :(. – Adam

0

Finalmente pude hacer que mi instalación de "macports" fuera lo suficientemente consistente como para instalar y ejecutar imagemagick. Tuve que eliminar manualmente mi/opt/local/directores donde vivían los archivos, y limpiar algunas otras dependencias.

+0

¡No! Hablé demasiado pronto. Se compila y compila, pero no se ejecuta. Todas las operaciones fallan en una "interrupción de anulación". –

0

Parece que el enlazador dinámico está tirando del sistema libiconv.2.dylib (que tiene compatibilidad con la versión 7.0.0). Sin ver todo el proceso de compilación, es difícil saber con certeza por qué ocurre esto, pero sospecho de tu compilación de libiconv; en cuenta que en el siguiente fallo:

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) 

su libiconv.2.dylib parece pensar que su ruta de instalación es /usr/local/lib, no /opt/local/lib. Probablemente esta sea la razón por la cual el enlazador dinámico no lo está encontrando; lo está buscando en /usr/local/lib, no lo encuentra, y vuelve a caer en la biblioteca del sistema en /usr/lib.Intente configurar la ruta de instalación para su libiconv.2.dylib para que sus comandos de carga indiquen al vinculador que lo busque en /opt/local/lib, y eso puede resolver el problema.

1

He visto este error exacto con esta biblioteca exacta en varias situaciones. Fue, en todos los casos, una instancia en la que el individuo o un script que estaban usando establecían la variable DYLD_LIBRARY_PATH.

Asegúrese de que no se establezca esta variable, ya que anula la carga de las bibliotecas explícitamente vinculadas con las de esa ruta.

Si se debe establecer el DYLD_ *, use el DYLD_FALLBACK_LIBRARY_PATH más sensato. Que intentará cargar primero las bibliotecas explícitamente vinculadas, y luego volver a las declaradas por el usuario.

Me di cuenta en su compilación inicial que no estaba encontrando la biblioteca gettext en macports. Así que asegúrese de que estén instalados.

+0

esto debería ser DYLD_FALLBACK_LIBRARY_PATH. Ver 'man dyld' –

3

También puede probar el script de instalación de ImageMagick encuentra aquí: http://github.com/masterkain/ImageMagick-sl

Me ha ayudado mucho. Puede ser necesario cambiar algunas versiones de la biblioteca dentro del script.

0

Tuve el mismo problema y lo resolví desinstalando y luego reinstalando libiconv usando Macports. Entonces todo funciona bien (también tengo/opt/local/lib/como la primera entrada en mi variable DYLD_LIBRARY_PATH)

0

Extraño. Estoy muy contento con mis macports, y todo está compilado sin errores. Solo puedo aconsejar, usar macports.
ImageMagick @ 6.6.9-9_0 + + graphviz hdri + + jpeg2 mpeg + Perl + Q16 + + rsvg WMF (activo)

5

Esto funcionó para mí:

sudo brew install imagemagick

Cuestiones relacionadas