在开始之前,让我为这篇文章添加替代标题:
如何使用英特尔MKL编译CVXOPT?
如何在CVXOPT中更改__init__.py以使用英特尔MKL进行编译?
让我解释一下这个问题。我正在尝试使用Enthought python安装pystruct,因为与Ubuntu包管理器中的python相比,Enthought python提供了显着的加速。加速主要是由于使用英特尔MKL库编译后端线性代数库。我不得不说CVXOPT和pystruc与gnu python相当不错。
我想知道是否有人试图用Enthought python(Canopy以前的EPD)安装CVXOpt?它需要使用英特尔MKL进行编译。
当我构建CVXOPT并尝试将其导入Enthought python时,我收到以下错误(这似乎是链接器错误):
>>> import cvxopt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "cvxopt/__init__.py", line 32, in <module>
import cvxopt.base
ImportError: /home/kayhan/Enthought/Canopy_64bit/User/bin/../lib/libgfortran.so.3: version `GFORTRAN_1.4' not found (required by /usr/lib/liblapack.so.3gf)
但是如果我尝试在默认的python中导入它,我没有错误(测试也有效)。
我想问题是链接到错误的库。我也有INTEL MKL以防我需要重新编译CVX相对于MKL(这似乎是blas Enthought正在使用的版本)。我在文档中找不到如何让它与Enthough一起工作的任何说明,请指教。
更新:正如我之前提到的,CVXOPT编译并运行gnu python。我做了以下技巧,看起来并不是很好,但它确实有效:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libfreetype.so:/usr/lib/x86_64-linux-gnu/libgfortran.so.3 python
我从这篇文章中学到了:(libgfortran: version `GFORTRAN_1.4' not found)
现在,问题是干净的方法是什么?如何只为一个包预加载库。或者使用英特尔MKL编译CVXOPT,而不必预先加载库?
谢谢,
世界报