Mac OSX Snow Leopard上的ImageMagick。有没有办法让它编译和运行?

时间:2010-03-23 20:00:19

标签: macos osx-snow-leopard imagemagick

似乎我在Snow Leopard上运行标准Unix的东西比其他任何平台都要困难 - 包括Windows cygwin

在过去的几天里,我一直试图让ImageMagick在Snow Leopard上运行。

最明显的方式,Mac Ports,失败了:

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

此脚本独立于MacPorts问题下载并安装ImageMagic

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在OSX Snow Leopard上运行?是否有任何二进制发行版都有静态库,因此我不必担心这些问题/

8 个答案:

答案 0 :(得分:5)

这对我有用:

sudo brew install imagemagick

答案 1 :(得分:3)

您也可以尝试位于此处的ImageMagick安装脚本: http://github.com/masterkain/ImageMagick-sl

它给了我很多帮助。可能需要更改脚本中的某些库版本。

答案 2 :(得分:1)

在多种情况下,我已经看到了这个精确库的确切错误。在每种情况下,它都是一个实例,他们使用的个人或脚本都设置了DYLD_LIBRARY_PATH变量。

确保未设置此变量,因为它会覆盖显式链接库与该路径上的库的加载。

如果必须设置DYLD_ *,请使用更合理的DYLD_FALLBACK_LIBRARY_PATH。这将首先尝试加载显式链接库,然后回退到用户声明的库。

我在初始构建时注意到它没有在macports中找到gettext库。所以确保安装它们。

答案 3 :(得分:0)

我的谷歌出现了一些点击,第一个或第二个点击了link to the binary

答案 4 :(得分:0)

我终于能够使我的“macports”安装足够稳定,以便安装和运行imagemagick。我不得不手动删除文件所在的/ opt / local / directores,并清除其他一些依赖项。

答案 5 :(得分:0)

似乎动态链接器正在引入系统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/local/lib。这可能是动态链接器找不到它的原因;它在/usr/local/lib中寻找它,没有找到它,并且回到/usr/lib中的系统库。尝试设置libiconv.2.dylib的安装路径,以便它的加载命令告诉链接器在/opt/local/lib中查找它,这可能会解决问题。

答案 6 :(得分:0)

我遇到了同样的问题,通过卸载然后使用Macports重新安装libiconv解决了这个问题。然后一切正常(我还有/ opt / local / lib /作为我的DYLD_LIBRARY_PATH变量中的第一个条目)

答案 7 :(得分:0)

奇怪。我对我的macport很满意 - 所有内容都编译没有错误。我只能建议 - 使用macports ImageMagick @ 6.6.9-9_0 + graphviz + hdri + jpeg2 + mpeg + perl + q16 + rsvg + wmf(有效)