這次想在 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搞定。
沒有留言:
張貼留言