我使用Ubuntu 14.04。我正在使用GNU 6.3.0从源代码构建GNU Octave 4.2.1。这个版本的Octave是相当新的,但我发现在尝试编译旧的Octave版本时也会出现问题(低至3.8.1)。
我使用
配置Octave的构建${sourcedir}/configure --prefix=/opt/octave/4.2.1 \
--with-java-homedir=/usr/lib/jvm/default-java \
--with-java-libdir=/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server
编译成功但出现了不需要的警告
configure: WARNING: ARPACK library found, but does not seem to work properly; disabling eigs function
我更愿意使用eigs()函数。
我自己使用相同的编译器构建了ARPACK-ng。测试套件中的所有测试(make check
)都将通过。环境变量LD_LIBRARY_PATH
和PKG_CONFIG_PATH
按预期指向ARPACK库目录。 Octave的配置文件正确识别该位置,如前所述。
此外,如果我在另一台本机安装ARPACK的计算机上编译Octave(libarpack2
和libarpack2-dev
版本3.1.5-2),我会得到相同的消息。如果我还使用包存储库安装相关的额外库libarpack++2c2a
和libarpack++2-dev
,那么它不会改变。因此问题似乎与ARPACK文件的来源无关。
抛出此错误的Octave的configure.ac
文件部分是
### Check for ARPACK library.
save_LIBS="$LIBS"
LIBS="$LAPACK_LIBS $BLAS_LIBS $FLIBS $LIBS"
OCTAVE_CHECK_LIB([arpack], ARPACK,
[ARPACK not found. The eigs function will be disabled.],
[],
[dseupd],
[Fortran 77], [don't use the ARPACK library, disable eigs function],
[warn_arpack=
OCTAVE_CHECK_LIB_ARPACK_OK(
[AC_DEFINE(HAVE_ARPACK, 1, [Define to 1 if ARPACK is available.])],
[warn_arpack="ARPACK library found, but does not seem to work properly; disabling eigs function"])])
LIBS="$save_LIBS"
我追溯问题的最远处是发出警告的子例程OCTAVE_CHECK_LIB_ARPACK_OK
存在于文件${octave_source}/m4/acinclude.m4
中。它是用m4 language写的,我不知道
是否有可能理解为什么ARPACK'似乎无法正常工作'?
这有什么解决方法吗?
这是误报还是错误?