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

问题描述 投票:2回答:1

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

对'dacosd_'的未定义引用

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

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

我使用的gfortran版本是5.4.1。

compiler-errors fortran gnu gfortran compiler-flags
1个回答
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功能,以保持便携性。

© www.soinside.com 2019 - 2024. All rights reserved.