您至少需要调整 PATH 和 LD_LIBRARY_PATH 环境变量。
PATH 环境变量还需要包含/Developer/usr/bin
. 我已经编写了一个 ~/.bash_devenv 文件,每次我想在 2010 年中期的 Mac Pro 上编译 C 代码(从 Snow Leopard 升级到 Lion 再到 Lion Server)时都会获取该文件。
$ cat ~/.bash_devenv
ARCHFLAGS="-isysroot /Developer/SDKs/MacOSX10.7.sdk -mmacosx-version-min=10.7"
LDFLAGS="-L/Developer/SDKs/MacOSX10.7.sdk/usr/lib -L/usr/lib"
CFLAGS="-I/Developer/SDKs/MacOSX10.7.sdk/usr/include -I/usr/include -O2 -pipe -fomit-frame-pointer"
CPPFLAGS="-I/usr/include/ -I/Developer/SDKs/MacOSX10.7.sdk/usr/include"
LD_LIBRARY_PATH="/Developer/SDKs/MacOSX10.7.sdk/usr/lib/gcc/i686-apple-darwin11/4.2.1/x86_64/:$LD_LIBRARY_PATH"
case $1 in
32)
export LDFLAGS="-arch i386 -arch x86_64 $LDFLAGS"
export FFLAGS="-m i386 -m x86_64"
export CFLAGS="-arch i386 -arch x86_64 $CFLAGS"
export CPPFLAGS="-arch i386 -arch x86_64 $CPPFLAGS"
export LD_LIBRARY_PATH="/Developer/SDKs/MacOSX10.7.sdk/usr/lib/gcc/i686-apple-darwin11/4.2.1/:$LD_LIBRARY_PATH"
;;
64)
export LDFLAGS="-arch x86_64 $LDFLAGS"
export FFLAGS="-m x86_64"
export CFLAGS="-arch x86_64 $CFLAGS"
export CPPFLAGS="$CPPFLAGS"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/Developer/SDKs/MacOSX10.7.sdk/usr/lib/gcc/i686-apple-darwin11/4.2.1/"
;;
*)
export LDFLAGS="$LDFLAGS"
export FFLAGS="-m x86_64"
export CFLAGS="-L/Developer/SDKs/MacOSX10.7.sdk/usr/lib -L/usr/lib -arch x86_64 $CFLAGS"
export CPPFLAGS="$CPPFLAGS"
export LD_LIBRARY_PATH="/usr/lib:/Developer/SDKs/MacOSX10.7.sdk/usr/lib:$LD_LIBRARY_PATH"
;;
esac
### GLOBALS ###
export PATH="/Developer/usr/bin:/Developer/usr/local/bin:$PATH"
一些 CFLAGS 可能是多余的(-I/path/to/dir 指令),但它应该主要与任何运行 Lion 和 XCode 的机器相关。
我刚刚在 Lion 上成功编译了 Cython。但它失败了,在我之前:
1)输入命令source ~/.bash_devenv
2)使用我手动编译的自定义版本的 Python。
即 cython 编译失败,默认安装 Python,因为它找不到 Python.h。如果你知道在哪里可以找到系统 Python.h 并想使用系统 Python(如果你想构建自己的 numpy 或其他库,不推荐),将包含 Python.h 的目录添加到 CPPFLAGS;例如CPPFLAGS+=" -I/usr/local/include"
。
或者,下载 Enthought 的 Python 发行版,其中包括 cython,以及许多其他有用的库,包括他们内部开发的开源代码(cwrap是我知道的一个模块,旨在与 cython 协同工作)。
安全的