【发布时间】:2015-10-18 11:05:58
【问题描述】:
我正在尝试编译 Cython 程序,但尝试链接 LAPACK 和 BLAS 时出现错误(它找不到库)。我有 Anaconda Accelerate,它会自动将 MKL 链接到 NumPy,所以我尝试复制 NumPy 的链接。
>>> import numpy as np
>>> np.show_config()
mkl_info:
include_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/include']
define_macros = [('SCIPY_MKL_H', None)]
libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/lib']
blas_mkl_info:
include_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/include']
define_macros = [('SCIPY_MKL_H', None)]
libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/lib']
lapack_mkl_info:
include_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/include']
define_macros = [('SCIPY_MKL_H', None)]
libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/lib']
blas_opt_info:
include_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/include']
define_macros = [('SCIPY_MKL_H', None)]
libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/lib']
openblas_lapack_info:
NOT AVAILABLE
lapack_opt_info:
include_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/include']
define_macros = [('SCIPY_MKL_H', None)]
libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/home/ubuntu/miniconda3/envs/LDFMap/lib']
这是我的setup.py 文件
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
from Cython.Build import cythonize
import numpy as np
import os
setup(
author = "Rohan Pandit",
url='https://www.github.com/rohanp/LDFMap',
ext_modules = cythonize([Extension("LDFMap",
sources = ["LDFMap.pyx"],
include_dirs = [np.get_include(), "/home/ubuntu/LDFMap/src/include", "/home/ubuntu/miniconda3/envs/LDFMap/include"],
language="c++",
libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread'],
library_dirs = ["/home/ubuntu/LDFMap/src/include", '/home/ubuntu/miniconda3/envs/LDFMap/lib'],
extra_compile_args = ["-I /home/ubuntu/LDFMap/src/include", "-I /usr/local/include"],
)])
)
这是我的错误信息: (为了便于阅读,我添加了换行符)
g++ -pthread -shared -L/home/ubuntu/miniconda3/envs/LDFMap/lib -Wl,
-rpath=/home/ubuntu/miniconda3/envs/LDFMap/lib,--no-as-needed
build/temp.linux-x86_64-3.4/LDFMap.o -L/home/ubuntu/LDFMap/src/include
-L/home/ubuntu/miniconda3/envs/LDFMap/lib -
L/home/ubuntu/miniconda3/envs/LDFMap/lib -lmkl_lapack95_lp64 -
lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -
lpython3.4m -o /home/ubuntu/LDFMap/src/LDFMap.cpython-34m.so
/usr/bin/ld: cannot find -lmkl_lapack95_lp64
我不明白的是,如果此链接适用于 NumPy,为什么它不适用于我的程序?
【问题讨论】:
标签: python c++ numpy cython distutils