情况
我使用 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 的配置文件可以正确识别该位置,如前所述。
libarpack2
此外,如果我在另一台本地安装了 ARPACK(和libarpack2-dev
版本 3.1.5-2)的计算机上编译 Octave,我会收到相同的消息。libarpack++2c2a
如果我还安装相关的额外库并libarpack++2-dev
使用包存储库,它不会改变任何事情。所以这个问题似乎与 ARPACK 文件的来源无关。
configure.ac
引发此错误的 Octave 文件部分是
### 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语言写的,我不知道
问题
是否有可能理解为什么 ARPACK '似乎无法正常工作'?
有什么解决方法吗?
这是误报还是错误?