2012/05/25

在 OS X 安裝 GraphicsMagick 和 Pgmagick

有時候在 Mac OS X 想自己抓 source code 回來裝都會很頭大,所以有人就會建議用套件管理程式,像 MacPortsHomeBrewFink,但說真的也不是什麼套件都在這地方找得到。


這次想在 OS X 安裝 GraphicsMagick 和 Pgmagick,GraphicsMagick 是一套圖形處理的 library,比 ImageMagick 更快更好。其實我也沒有要處理太複雜的事情,就 圖形的裁切、縮放、套用一些濾鏡而已,但速度是我考量的。而 Pgmagick 則是 for python 的 wrapper。


直接抓 GraphicsMagick 原始碼下來編譯
遇到問題:
Undefined symbols for architecture x86_64:
  "___builtin_object_size", referenced from:
      _BlurImageScanlines.omp_fn.1 in magick_libGraphicsMagick_la-effect.o
      _XShearImage.omp_fn.0 in magick_libGraphicsMagick_la-shear.o
      _YShearImage.omp_fn.1 in magick_libGraphicsMagick_la-shear.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[1]: *** [magick/libGraphicsMagick.la] Error 1
make: *** [all] Error 2

遇到這種問題都很沒轍,上次遇到時好像是 dependency 的library configure 時沒有加 --enable-shared,但這次就不知道怎麼找了。

加了一些有的沒的環境變數 LDFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64" CFLAGS="-m64" ... 沒用。


試著用 MacPorts
port install graphicsmagic
結果在裝 pgmagick 時會遇到 "Exception: Magick++ not found" 的訊息,表示只裝了 graphicsmagick 而沒有 graphicsmagick-c++,但MacPorts有沒有這玩意。

看到有人說要用 brew 來裝:
Installing pgmagick on OS X - rohan singh
python - How to build pgmagick under pythonbrew on OS X? - Stack Overflow
$ brew install graphicsmagick --with-magick-plus-plus
$ brew install imagemagick --with-magick-plus-plus
$ brew install boost --with-thread-unsafe

遇到:
$ link --debug jpeg
Linking /usr/local/Cellar/jpeg/8d...
Error: Could not symlink file: /usr/local/Cellar/jpeg/8d/bin/djpeg
Target /usr/local/bin/djpeg already exists. You may need to delete it.
Issue #11092: Install ImageMagick Fails Due to "brew link jpeg" · mxcl/homebrew
可能是之前有下載 libjpeg source code 下來安裝,直接把 target file 刪掉在執行一次就好了。


再來裝 pgmagick
$ pip install pgmagick
...
ld: library not found for -lboost_python
collect2: ld returned 1 exit status
error: command 'g++' failed with exit status 1
又來了...

原因是只有
/usr/local/lib/libboost_python-mt.a
/usr/local/lib/libboost_python-mt.dylib
而不是
/usr/local/lib/libboost_python.a
/usr/local/lib/libboost_python.dylib

根據 stackoverflow 討論串的指示,你得 clone pgmagick 的 source code 下來改
$ hg clone https://bitbucket.org/hhatto/pgmagick
$ cd pgmagic
$ vim setup.py
# 把 boost_lib = "boost_python" 改為 boost_lib = "boost_python-mt"
$ python setup.py build
$ python setup.py install

最後最後...終於安裝好了


PS. 在CentOS只要
$ yum install GraphicsMagick-c++-devel
$ yum install boost-devel
$ pip install pgmagick
搞定。


沒有留言:

張貼留言