Wednesday, June 22, 2011

关于 Mac 自带的 Cairo, libpng

Cairo
=====

最近在编译一些 graphics 有关的程序碰到了这个问题:
Mac 自带了 Cairo 库, 但是版本已经很老了 (1.8.6).
许多程序都要求 >= 1.10.0
从brew里安装了新的 cairo, 由于brew为了防止破坏原先系统上的软件依赖, 因此没有为pkg-config安装对应的 .pc 文件.
因此, 我在编译 pycairo 时, 还是会找到旧的 cairo.
解决方法很简单, 当需要用到新版本cairo时, 可以:

 1. export PKG_CONFIG_PATH=/path/to/cairo/pc/file   这样, pkg-config就会找到新版本cairo的.pc文件.
 2. 使用正确的 LDFLAGS 和 CPPFLAGS 进行编译.

由于 pycairo 使用了一个叫 waf 的东西进行编译, 而我有又没找到在哪里定义方法2所提到的变量,
因此只能使用方法1.

libpng
=======
Mac 自带了 X11.app (也叫 XQuartz), 是 Apple 版本的 X11, 基于 Xorg. 里面自带了 libpng 1.2.
最新版本的 XQuartz 使用了 libpng 1.4. 但是安装了它会造成许多 confusion. 而旧的 X11.app 用起来也没什么大问题.
于是最好把新的 XQuartz 卸载掉.
具体方法见:

主要是:

sudo rm -rf /opt/X11* /Library/Launch*/org.macosforge.xquartz.* /Applications/Utilities/XQuartz.app /etc/*paths.d/*XQuartz
sudo pkgutil --forget org.macosforge.xquartz.pkg

No comments: