【问题标题】:using cython in combination with gsl将 cython 与 gsl 结合使用
【发布时间】:2014-11-02 22:40:06
【问题描述】:

我正在使用 Cython,我想导入 gnu 科学 C 库。

#gsl_test.pyx

cdef extern from "gsl/gsl_math.h":
double gsl_pow_int (double x, int n)
def gibbs(double k, int t):    
y = gsl_pow_int (k, t)
return y

#setup.py 

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import numpy

include_gsl_dir = "/home/sulabh/include/"
lib_gsl_dir = "/home/sulabh/lib/"


ext = Extension("sl", sources = ["gsl_test.pyx"],include_dirs=[numpy.get_include(),include_gsl_dir],library_dirs=[lib_gsl_dir],libraries=["gsl"])

setup(ext_modules=[ext],cmdclass = {'build_ext': build_ext})



python setup.py build_ext --inplace

which resulted into sl.o

我已经进入python控制台通过写import sl来导入这个模块,但是我得到了一个错误

import sl
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /home/sulabh/lib/libgsl.so.0: undefined symbol: cblas_dasum

这是我的包配置的样子

prefix=/home/sulabh/gsl-1.16/..
exec_prefix=/home/sulabh/gsl-1.16/..
libdir=/home/sulabh/gsl-1.16/../lib
includedir=/home/sulabh/gsl-1.16/../include
GSL_CBLAS_LIB=-lgslcblas

名称:GSL 描述:GNU 科学图书馆 版本:1.16 库:-L/home/sulabh/gsl-1.16/../lib -lgsl ${GSL_CBLAS_LIB} -lm -lm 标志:-I/home/sulabh/gsl-1.16/../include

谁能帮忙

【问题讨论】:

  • 看看这个post。这是一个如何在cython中调用gsl函数的例子。

标签: python c numpy cython gsl


【解决方案1】:

在函数调用Extension的库列表中添加“gslcblas”,即

ext = Extension(...,libraries=["gsl", "gslcblas"])

或您想要添加的其他 BLAS 库。

【讨论】:

  • 哈哈,今天我明白了接受的真正含义。
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多