使用该选项
-I/Users/myuser/anaconda/include/python2.7的
gcc命令。(假设您使用的是python
2.7。更改名称以使其与所使用的python版本匹配。)您可以使用以下命令
python-config --cflags获取建议的全套编译标志集:
$ python-config --cflags-I/Users/myuser/anaconda/include/python2.7 -I/Users/myuser/anaconda/include/python2.7 -fno-strict-aliasing -I/Users/myuser/anaconda/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
setup.py,并
distutils为您找出所有编译和链接选项。
# setup.pyfrom distutils.core import setup, Extensionexample_module = Extension('_example', sources=['example_wrap.c', 'example.c'])setup(name='example', ext_modules=[example_module], py_modules=["example"])
然后,您可以运行:
$ swig -python example.i$ python setup.py build_ext --inplace
(看看
setup.py运行时回显到终端的编译器命令。)
distutils知道SWIG,因此
example_wrap.c可以包括而不是将其包括在源文件列表中
example.i,并且
swig将由安装脚本自动运行:
# setup.pyfrom distutils.core import setup, Extensionexample_module = Extension('_example', sources=['example.c', 'example.i'])setup(name='example', ext_modules=[example_module], py_modules=["example"])
使用上述版本的
setup.py,您可以使用单个命令构建扩展模块
$ python setup.py build_ext --inplace
构建扩展模块后,您应该可以在python中使用它:
>>> import example>>> example.fact(5)120
如果您不想使用该脚本
setup.py,那么下面的一组命令对我有用:
$ swig -python example.i$ gcc -c -I/Users/myuser/anaconda/include/python2.7 example.c example_wrap.c $ gcc -bundle -undefined dynamic_lookup -L/Users/myuser/anaconda/lib example.o example_wrap.o -o _example.so
注意:我使用的是Mac OS X 10.9.4:
$ gcc --versionConfigured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)Target: x86_64-apple-darwin13.3.0Thread model: posix
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)