Mac安装Imagemagick和JMagick

引言

由于手贱看网上许多人说MacPorts安装软件先不查看本地是否有这个库而是直接安装,所以再三权衡就删掉了本来使用MacPorts已经装好的ImageMagick和JMagick转而使用HomeBrew安装。

遇到的问题

1.由于版本的问题,直接使用brew install imagemagick安装的是7.0以上的版本,而java所支持的jar是6.4.0,而且7.0include文件夹里的magick和wand的命名发生了变化,所以就导致安装的时候pkgconfig找不到所需要的库文件而编译的时候遇到各种各样的No such file or directory或者是其他的文件找不到
2.安装6.9.9-23的时候由于include路径下存放的文件多了一层Imagemagick-6,所以安装的时候如果没有做符号链接也就和上边的一样,在编译的时候各种文件找不到的问题就会出现,搞的你很是头疼。

解决问题

最后我选择了安装低版本的ImageMagick,也就是6.9.9-23
1.首先使用brew search imagemagick查找一库里都有什么版本
localhost:include amadeus$ brew search imagemagick
==> Searching local taps…
imagemagick@6 ✔ imagemagick
==> Searching taps on GitHub…
==> Searching blacklisted, migrated and deleted formulae…
2.完了之后直接brew install imagemagick就行了。
3.安装好之后是没有做符号链接的,需要手动做一下符号链接(安装完具体内容提示如下)
This formula is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have this software first in your PATH run:
echo ‘export PATH=”/usr/local/opt/imagemagick@6/bin:$PATH”‘ >> ~/.bash_profile

For compilers to find this software you may need to set:
LDFLAGS: -L/usr/local/opt/imagemagick@6/lib
CPPFLAGS: -I/usr/local/opt/imagemagick@6/include
For pkg-config to find this software you may need to set:
PKG_CONFIG_PATH: /usr/local/opt/imagemagick@6/lib/pkgconfig
4.这里注意一下由于6.9.9-23的时候由于include路径下存放的文件多了一层Imagemagick-6所以我们要将Imagemagick-6里的所有文件ln -s到include目录下
5.由于我们安装的是低版本的所以必须得自己去添加,最新版的brew会自己做好符号链接
大概意思就是如果你想使用的话就必须echo ‘export PATH=”/usr/local/opt/imagemagick@6/bin:$PATH”‘ >> ~/.bash_profile
运行完后source ~/.bash_profile让配置生效
然后我们cd /usr/local/lib到库目录下做符号链接

1
2
3
4
5
6
7
8
9
10
11
12
13
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagickCore-6.Q16.dylib libMagickCore-6.Q16.dylib
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagick++-6.Q16.8.dylib libMagick++-6.Q16.8.dylib
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagickCore-6.Q16.la libMagickCore-6.Q16.la
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagick++-6.Q16.a libMagick++-6.Q16.a
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagickWand-6.Q16.5.dylib libMagickWand-6.Q16.5.dylib
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagick++-6.Q16.dylib libMagick++-6.Q16.dylib
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagickWand-6.Q16.a libMagickWand-6.Q16.a
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagick++-6.Q16.la libMagick++-6.Q16.la
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagickWand-6.Q16.dylib libMagickWand-6.Q16.dylib
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagickCore-6.Q16.5.dylib libMagickCore-6.Q16.5.dylib
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagickWand-6.Q16.la libMagickWand-6.Q16.la
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/libMagickCore-6.Q16.a libMagickCore-6.Q16.a
localhost:lib amadeus$ ln -s /usr/local/Cellar/imagemagick@6/6.9.9-23/lib/ImageMagick ImageMagick

6.到这里我们基本上就已经装完了ImageMagick了
接下来就是安装JMagick了
进入到自己想要安装的目录
wget http://downloads.jmagick.org/6.4.0/jmagick-6.4.0-src.tar.gz
如果没有安装wget也可以使用 curl
curl -O http://downloads.jmagick.org/6.4.0/jmagick-6.4.0-src.tar.gz
tar -zxvf jmagick-6.4.0-src.tar.gz
mv 6.4.0 jmagick-6.4.0
cd jmagick-6.4.0
然后进行编译前的检测
./configure –with-java-home=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home –with-magick-home=/usr/local/Cellar/imagemagick@6/6.9.9-23/ –with-java-includes=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer
/SDKs/MacOSX.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/
这里的with-java-home设置成你自己的JAVA_HOME,with-magick-home就是你刚安装的imagemagick路径brew是默认安装在 /usr/local/Cellar下的,如果报错找不到jni.h文件。你要使用 sudo find / -name jni.h 查找一下jni.h文件的路径,然后将with-java-includes的路径改为你找到的jni.h文件路径.
7.验证通过后执行make命令编译一下。这里有可能会报错:../../Make.rule 175行出错。处理方法:打开Make.rule文件。将175行和176行前面的4个空格删除,换成tab遮掩就make成功了。然后再执行make和make install这样Jamgick就算安装成功了
8.最后执行一下 sudo ln -s /usr/local/lib/libJMagick.so /Library/Java/Extensions/libJMagick.jnilib 就OK了