Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scipy gfortran编译与-fPIC vs-frecursive_Scipy_Fortran_Gfortran_Lapack - Fatal编程技术网

Scipy gfortran编译与-fPIC vs-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完全无

我最近按照上的说明编译BLAS和LAPACK,作为SciPy安装的先决条件。首先,我在某个时候遇到了一个gfortran错误,这建议我使用-fPIC重新编译LAPACK。因此,我将makefile.inc中的-frecursive替换为-fPIC(我假设它是makefile为不同编译选项读取的某个文件),错误消失了

有没有人能更笼统地解释一下用-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编译器手册页,您很可能需要这两种语言。