Octave 八度音阶+BLAS+ACML和很多混乱

Octave 八度音阶+BLAS+ACML和很多混乱,octave,gfortran,blas,Octave,Gfortran,Blas,我试着编译八度音阶,得到了关于gfortran与BLAS不兼容的流行信息。我检查了config.log文件并提取了失败的测试程序,以单独测试它。事实上,测试失败了。现在,这让我感到困惑——至少对我来说: 底部添加的测试程序不是在configure with The compiler选项中编译的,该选项会强制gfortran进入64位默认模式,并且内部使用的整数声明为简单整数而不是*8。因此,如果必须使用64位整数模式,那么如果我将gfortran的版本设为默认64位整数,我会读到所有fortra

我试着编译八度音阶,得到了关于gfortran与BLAS不兼容的流行信息。我检查了config.log文件并提取了失败的测试程序,以单独测试它。事实上,测试失败了。现在,这让我感到困惑——至少对我来说:

底部添加的测试程序不是在configure with The compiler选项中编译的,该选项会强制gfortran进入64位默认模式,并且内部使用的整数声明为简单整数而不是*8。因此,如果必须使用64位整数模式,那么如果我将gfortran的版本设为默认64位整数,我会读到所有fortrans都默认使用整数*4

我用64位整数测试了gfortran,声明了一个整数*8,并打印了该整数的巨大部分——它确实打印了64位的巨大数字,所以,至少“手动”地”,gfortran看起来还可以

尝试使用-enable-64-使用blas=acml\u mp-使用lapack=acml\u mp编译倍频程,并获得: BLAS似乎不支持64位整数

libgfortran似乎与ldd检查的blas无关。他们为什么要打架?我必须重新编译libgfortran吗

我更想知道为什么会发生这种情况,而不仅仅是一个简单的食谱,尽管这也很受欢迎,所以指向一些适用文档的指针会很有帮助

这是测试程序-我无法让gfortran同意libblas指向libacml的观点:

   program main

c  Compile with:
c  fortran -o testblas -ff2c -ff2c   testblas.f -lblas -lm -ffixed-line-length-none

   integer n,nn(3)
   real s,a(1),b(1),sdot
   b(1) = 1.0
   a(1) = 1.0
   print *, "Generate -2**32 + 1, if possible, to check if gfortran is 32/64 bit"
   print *, "If N >= 0, we are on 32 bits"                                       
   n = 2
   n = -4 ** (n ** 30)
   n = n + 1
   print*, "N=", n
   if (n >= 0) goto 1
   print *, "This means we are on 64-bit integers. Check whether the BLAS is, too."
   s = sdot(n,a,1,b,1)
   print *, "S should be <> 0: "
   if (s .ne. 0.0) stop 1
1  continue
   print*, "We may be on 32-bit integers, and the BLAS on 64 bits. This is almost bound"
   print*, "to have already failed, but just in case, we'll check."
   nn(1) = -1
   nn(2) = 1
   nn(3) = -1
   s = sdot(nn(2),a,1,b,1)
   print*, "BLAS, if 32-bit, will make s 1, and all is ok: s=", s
   if (s .ne. 1.0) stop 1                                        

   end
Generate -2**32 + 1, if possible, to check if gfortran is 32/64 bit
 If N >= 0, we are on 32 bits
 N=           1
 We may be on 32-bit integers, and the BLAS on 64 bits. This is almost bound
 to have already failed, but just in case, we'll check.
 BLAS, if 32-bit, will make s 1, and all is ok: s=   0.00000000    
STOP 1