2010-03-23 12 views
6

Sembra che io abbia più problemi a eseguire le operazioni standard di Unix su Snow Leopard rispetto a qualsiasi altra piattaforma, incluso Windows cygwinImageMagick su Mac OSX Snow Leopard. C'è un modo per farlo compilare ed eseguire?

Negli ultimi due giorni, ho cercato di far funzionare ImageMagick su Snow. Leopardo.

Il modo più ovvio, Porti Mac, fallisce:

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$ 

non vogliono spendere altri due giorni per capire il motivo per cui il mio libintl non dispone di una funzione di "gettext", ho provato un percorso diverso: il sceneggiatura menzionato qui: http://github.com/masterkain/ImageMagick-sl

download questo script e installa un ImageMagick indipendentemente MacPorts emette

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 

Si scarica tutto e compila bene, ma fallisce quando provo a eseguirlo, con il messaggio sopra.

Così ora sono a due passi da ImageMagick, cercando di ottenere una versione più recente di libiconv sulla mia macchina.

Ho scaricato l'ultima versione di libiconv, compilata e costruita. Ho messo la libreria risultante in/opt/local/lib, e ho ancora lo stesso messaggio di errore:

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 

Ora qui è qualcosa di interessante. Il messaggio di errore mostra che sta cercando in /opt/local/lib/libiconv.2.dylib.

otools -L dimostra che questo non implementa 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$ 

E, per buona misura, ho impostato il DYLD_LIBRARY_PATH per assicurarsi che questa directory è quello per librerie dinamiche.

Quindi anche se ho una libreria che fornisce 8.0.0, è vista come 7.0.0! Qualche idea sul perché questo accada?

Quindi, ecco la mia domanda: è possibile eseguire ImageMagick su OSX Snow Leopard? Ci sono distribuzioni binarie con biblioteche statiche cotte in forno quindi non devo preoccuparmi di questi problemi/

risposta

0

Il mio google ha mostrato alcuni colpi, e il primo o il secondo aveva uno link to the binary.

+0

Grazie! Ho visto quella pagina, ma l'ho persa perché prima raccomandava l'uso di MacPorts. La distribuzione binaria sembra funzionare. (Anche se preferirei uno con le librerie collegate staticamente, cambiando la variabile di ambiente DYLD_LIBRARY_PATH si rompono altre cose ...) –

+5

Gli utenti di ImageMagick hanno purtroppo cancellato il file binario di lavoro e hanno invece inserito un binario solo sul loro sito web . Questa risposta non è più corretta :(. – Adam

0

Sono finalmente riuscito a ottenere l'installazione "macports" abbastanza consistente da far installare e utilizzare imagemagick. Ho dovuto cancellare manualmente il mio/opt/local/directores dove vivevano i file, e pulire alcune altre dipendenze.

+0

No. Ho parlato troppo presto. Compila e costruisce, ma non esegue. Ogni operazione muore in una "Interruzione interruzione". –

0

Sembra che il linker dinamico stia inserendo il sistema libiconv.2.dylib (che ha la compatibilità versione 7.0.0). Senza vedere il tuo intero processo di compilazione è difficile sapere con certezza perché sia ​​così, ma sono sospettoso della tua creazione di libiconv; notare che nel seguito del mancato:

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) 

tua libiconv.2.dylib sembra pensare che il suo percorso di installazione è /usr/local/lib, non /opt/local/lib. Questo probabilmente perché il linker dinamico non lo trova; lo sta cercando in /usr/local/lib, non trovandolo e ricadendo nella libreria di sistema in /usr/lib.Prova a impostare il percorso di installazione per il tuo libiconv.2.dylib in modo che i comandi di caricamento comunichino al linker di cercarlo in /opt/local/lib e questo potrebbe risolvere il problema.

1

Ho visto questo errore esatto con questa libreria esatta in più situazioni. Era, in ogni caso, un'istanza in cui l'individuo o uno script che stavano usando stava impostando la variabile DYLD_LIBRARY_PATH.

Assicurarsi che questa variabile non sia impostata poiché sostituisce il caricamento delle librerie collegate esplicitamente con quelle su quel percorso.

Se è necessario impostare DYLD_ *, utilizzare il più ragionevole DYLD_FALLBACK_LIBRARY_PATH. Che tenterà di caricare prima le librerie esplicitamente collegate, quindi di fallback a quelle dichiarate dall'utente.

Ho notato sul build iniziale che non stava trovando la libreria gettext in macports. Quindi assicurati che siano installati.

+0

questo dovrebbe essere DYLD_FALLBACK_LIBRARY_PATH vedi 'man dyld' –

3

Si può anche provare l'ImageMagick script di installazione trova qui: http://github.com/masterkain/ImageMagick-sl

E mi ha aiutato molto. Potrebbe essere necessario per modificare alcune versioni della libreria all'interno dello script.

0

Ho avuto lo stesso problema e l'ho risolto disinstallando e reinstallando libiconv utilizzando Macports. Quindi tutto funziona correttamente (ho anche/opt/local/lib/come prima voce nella mia variabile DYLD_LIBRARY_PATH)

0

Strano. Sono piuttosto soddisfatto dei miei macport e tutto è compilato senza errori. Posso solo consigliare - usare i macport.
ImageMagick @ 6.6.9-9_0 + graphviz + hdri + JPEG2 + mpeg + perl + Q16 + rsvg + WMF (attivi)

5

questo ha funzionato per me:

sudo brew install imagemagick

Problemi correlati