Scipy gfortran编译与-fPIC vs-frecursive
我最近按照上的说明编译BLAS和LAPACK,作为SciPy安装的先决条件。首先,我在某个时候遇到了一个gfortran错误,这建议我使用-fPIC重新编译LAPACK。因此,我将makefile.inc中的-frecursive替换为-fPIC(我假设它是makefile为不同编译选项读取的某个文件),错误消失了 有没有人能更笼统地解释一下用-fPIC和-frecursive编译东西的区别,以及在我的例子中它是如何帮助修复错误的Scipy gfortran编译与-fPIC vs-frecursive,scipy,fortran,gfortran,lapack,Scipy,Fortran,Gfortran,Lapack,我最近按照上的说明编译BLAS和LAPACK,作为SciPy安装的先决条件。首先,我在某个时候遇到了一个gfortran错误,这建议我使用-fPIC重新编译LAPACK。因此,我将makefile.inc中的-frecursive替换为-fPIC(我假设它是makefile为不同编译选项读取的某个文件),错误消失了 有没有人能更笼统地解释一下用-fPIC和-frecursive编译东西的区别,以及在我的例子中它是如何帮助修复错误的 谢谢 正如索伦所评论的:-fPIC与-frecursive完全无
谢谢 正如索伦所评论的:
-fPIC
与-frecursive
完全无关。PIC影响机器代码在内存中的定位方式。如果要编译库代码,必须编译为可重定位的。换句话说,代码必须能够运行,无论它加载到内存中的什么位置。更详细地处理这个问题
如果可能,确实应该指定-frecursive
。较旧的gfortran
实现,例如RedHat 5上的gfortran
4.1.2不支持此选项。目前我还没有看到解决方法,所以您必须将其删除。
报告将其描述为
Allow indirect recursion by forcing all local arrays to be allocated on the stack
在您提到的线程中,为了编译LAPACK库,可以删除选项-frecursive
。然后库编译
如果没有此功能,它是否工作还有待观察。尚未测试。进一步搜索后,我找到了答案。。除了-frecursive与-fPIC无关——阅读fort-ran编译器手册页,您很可能需要这两种语言。