gfortran使用`-dec-math`给`dacosd_`提供未定义的引用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gfortran使用`-dec-math`给`dacosd_`提供未定义的引用相关的知识,希望对你有一定的参考价值。

我正在尝试使用gfortran编译Fortran应用程序,链接到英特尔MKL库。

对'dacosd_'的未定义引用

有一个acosacosd(反度余弦的程度),我几乎在那里,但我无法使用-fall-intrinsics-dec-math标志编译,如手册中所示,因为它都会产生相同的错误。

哪里弄错了,怎么编译呢?

我使用的gfortran版本是5.4.1。

答案

正如RussF评论的那样,这些非标准扩展函数包含在gfortran 7及更高版本中。你需要一个更新的版本。另外,正确的旗帜是-fdec-math,而不是-dec-math

intrinsic dacosd

print *, dacosd(0.5d0)
end

编译为:

> gfortran-6 -fdec-math dacosd.f90 
gfortran-6: error: unrecognized command line option ‘-fdec-math’; did you mean ‘-ffast-math’?
> gfortran-7 -fdec-math dacosd.f90
> ./a.out 
   60.000000000000007     

您可以通过转换轻松完成相同的计算

double precision, parameter :: pi = acos(-1.d0)
print *, acos(0.5d0)*180/pi
end

或者您可以通过这种方式定义自己的(d)acosd功能,以保持便携性。

以上是关于gfortran使用`-dec-math`给`dacosd_`提供未定义的引用的主要内容,如果未能解决你的问题,请参考以下文章

不能在Ubuntu上使用gfortran和Abaqus 2016

使用 GCC 和 GFORTRAN 进行矢量化

我可以为 gfortran 使用哪些 gcc 编译器选项

gfortran 中的 ieee_arithmetic 内在模块

编译使用带有gfortran的英特尔MKL模块的代码

浮点错误 gfortran